目标C initWithNibName
问题描述:
我面临一些困难搞清楚什么该功能在苹果教程代表:目标C initWithNibName
[[MyViewController alloc] initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle]]
我的问题是:什么是“@” MyViewController前等待?
附加地,因为我遵循this教程,我想知道:在我的项目中有nibs:自动生成的MainWindow.xib和MyViewController.xib - 我想知道:为什么我有两个,如果我只需要一个?
在此先感谢!
答
字符串文字前的@ -sign表示该字符串是NSString的一个实例。
@"Hello" <-- NSString object
"Hello" <-- Null-terminated char array (C-string)
,你甚至可以将消息发送到它:
[@"Hello" stringByAppendingString:@" World!"]
您将使用NSString对象往往比C字符串。
如果你想在C-字符串转换为一个NSString对象(如果您使用的是返回这样的字符串,例如C库),你可以这样做:
char *myCstring = "Hello, World!";
NSString *myString = [NSString stringWithUTF8String:myCstring];
关于两种笔尖:实际上你根本不需要任何笔尖,但是苹果喜欢使用只有一个窗口的笔尖来降低性能。我不知道他们为什么这样做,但是你可以用代码创建一个只有一行的窗口,编译和运行速度更快。
在你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.
个人而言,我更喜欢在根本不使用笔尖,但是这是自己的选择。
谢谢!为什么char-array以null结尾?并且:我可以将它转换为NSString对象吗? – arik 2011-06-03 09:48:36
真的吗?我更喜欢在代码中制作窗口,但Apple永远不会告诉我如何去做。你可以吗?这对我来说非常重要!谢谢! – arik 2011-06-03 09:49:31
在C中,字符串总是[以空字符结尾](http://en.wikipedia.org/wiki/C_string)。您可以将其转换为NSString对象,但除非使用C库(例如SQLite),否则通常不需要使用C字符串。 – 2011-06-03 09:50:05