如果我尝试使用这个简单的代码:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Add the tab bar controller's current view as a subview of the window
[window addSubview:tabBarController.view];
NSString *stringMer = [NSString stringWithFormat:@"OK COOL"] ;
NSString *stringMer2 = [NSString stringWithFormat:@"OK COOL"];
NSArray *truc = [NSArray arrayWithObjects:stringMer,stringMer2];
}
我的应用程序崩溃(“无法读取未知加载命令0x22”或只是常规崩溃)... applicationDidFinishLaunching来自我的FooAppDelegate,我没有更多代码,这是正常的吗?
答案 0 :(得分:37)
传递给arrayWithObjects:
方法的参数列表必须为nil
- 已终止:
NSArray *truc = [NSArray arrayWithObjects:stringMer,stringMer2, nil];
答案 1 :(得分:9)
不要使用+ stringWithFormat:除非你实际上有一个需要解析的格式字符串。
答案 2 :(得分:2)
NSResponder是对的 - 不要通过默认为stringWithFormat而马虎。 Perspx还指出了一个相当明显(但很容易被遗忘)错误的缺失nil。
我会更明确一点 -
(在.h中)
NSArray *truc; (assuming it won't be a property)
(在.m中)
//actually, I'd define, "OK COOL" as a string and init with that, but...
NSString *stringMer = [[NSString alloc] initWithString:@"OK COOL"] ;
NSString *stringMer2 = [[NSString alloc] initWithString:@"OK COOL"];
truc = [[NSArray alloc] initWithObjects:stringMer,stringMer2, nil];
//appease the memory gods
[stringMer release];
[stringMer2 release];
(然后,dealloc)
[truc release];
熟悉乐器会很好 - 运行Leaks。