我正面临一些困难,弄清楚Apple教程中的这个功能代表什么:
[[MyViewController alloc] initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle]]
我的问题是:“@”在MyViewController之前代表什么?
另外,当我关注this教程时,我想知道:我的项目中有nibs:自动生成的MainWindow.xib和MyViewController.xib - 我想知道:为什么我有两个如果我只需要一个?
提前致谢!
答案 0 :(得分:2)
字符串文字前面的@ -sign表示该字符串是NSString的一个实例。
@"Hello" <-- NSString object
"Hello" <-- Null-terminated char array (C-string)
您甚至可以向其发送消息:
[@"Hello" stringByAppendingString:@" World!"]
您将比C字符串更频繁地使用NSString对象。
如果要将C字符串转换为NSString对象(例如,如果您使用的C库返回此类字符串),则可以使用:
char *myCstring = "Hello, World!";
NSString *myString = [NSString stringWithUTF8String:myCstring];
关于两个笔尖:实际上你根本不需要任何笔尖,但Apple喜欢使用只有一个窗口的笔尖来降低性能。我不知道他们为什么这样做,但你可以在代码中创建一个只有一行的窗口,它可以更快地编译和运行。
在applicationDidFinishLaunching:
方法中:
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.
就我个人而言,我更喜欢不使用笔尖,但这是他们自己的选择。