我正在尝试使用一个基础的工具测试(Objective-C),有几个问题需要解决...
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int planetLoop;
NSString *tempString;
NSMutableArray *planetArray = [[NSMutableArray alloc] init];
NSLog(@"STRING ARRAY ... Start");
for(planetLoop=0; planetLoop<10; planetLoop++) {
tempString = [NSString stringWithFormat: @"Planet_%03d", planetLoop+1];
NSLog(@"Planet_%03d", planetLoop+1);
[planetArray addObject:tempString];
}
[planetArray release];
[pool drain];
return 0;
}
首先,通常我会在将对象添加到数组后释放它,但是我现在所做的是否正确,因为“tempString”是一个字符串字面量,因此不需要分配或释放内存?
其次,在执行之前,如果我运行这个代码,我会得到以下错误:“无法读取未知的加载命令0x80000022”,这是我的代码有问题吗?从谷歌搜索结果看,似乎这可能是xCode 3.1.2的一个bug,有人有任何想法吗?
最后,我做错了什么吗?我的想法是用10个字符串“Planet_001”到“Planet_010”填充一个数组。
编辑:啊,我明白了,那是因为“= [NSString”部分,即
// Autoreleased object
tempString = [NSString stringWithFormat: @"Planet_%03d", planetLoop+1];
// String literal
tempString = @"Planet_";
许多感谢,非常感激 -gary-
drain
会执行release
。 - Tom Dalling