首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目标C initWithNibName

目标C initWithNibName
EN

Stack Overflow用户
提问于 2011-06-03 17:44:00
回答 1查看 4.3K关注 0票数 1

我在弄清楚苹果教程中这个函数的含义时遇到了一些困难:

代码语言:javascript
复制
[[MyViewController alloc] initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle]]

我的问题是:在MyViewController之前,"@“代表什么?

另外,当我在学习this教程时,我想知道:在我的项目中有几个nibs :自动生成的MainWindow.xib和MyViewController.xib -我想知道:如果我只需要一个,为什么我会有两个呢?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-03 17:46:43

字符串文字前的@-符号表示该字符串是NSString的实例。

代码语言:javascript
复制
@"Hello" <-- NSString object
"Hello"  <-- Null-terminated char array (C-string)

你甚至可以向它发送消息:

代码语言:javascript
复制
[@"Hello" stringByAppendingString:@" World!"]

您将比C字符串更频繁地使用NSString对象。

如果您希望将C字符串转换为NSString对象(例如,如果您使用的是返回此类字符串的C库),则可以使用以下命令:

代码语言:javascript
复制
char *myCstring = "Hello, World!";
NSString *myString = [NSString stringWithUTF8String:myCstring];

关于两个笔尖:实际上你根本不需要任何笔尖,但苹果喜欢使用只有一个窗口的笔尖来降低性能。我不知道他们为什么要这样做,但你可以用代码创建一个窗口,只需要一行代码,编译和运行速度会快得多。

在您的applicationDidFinishLaunching:方法中:

代码语言:javascript
复制
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.rootViewController = [[[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil] autorelease];
// now you can remove the MainWindow.xib nib.

就我个人而言,我更喜欢不使用nib,但这是一个人自己的选择。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6225434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档