gpt4 book ai didi

objective-c - Objective-C initWithNibName

转载 作者:行者123 更新时间:2023-11-29 11:22:33 27 4
gpt4 key购买 nike

我在弄清楚 Apple 教程中的这个函数代表什么时遇到了一些困难:

[[MyViewController alloc] initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle]]

我的问题是:MyViewController 前面的“@”代表什么?

此外,正如我正在关注 this教程,我想知道:我的项目中有 nib:自动生成的 MainWindow.xib 和 MyViewController.xib – 我想知道:如果我只需要一个,为什么我有两个?

提前致谢!

最佳答案

字符串文字前的@符号表示该字符串是 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];

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

在您的 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.

我个人更喜欢完全不使用 Nib ,但这是个人的选择。

关于objective-c - Objective-C initWithNibName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6225434/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com