我有以下代码,并且遇到了一些问题。任何帮助,将不胜感激。当我运行代码时,我收到一个错误:
2010-11-11 12:28:15.352 addressBook[25563:a0f] *** __NSAutoreleaseNoPool(): Object 0x100111010 of class NSCFArray autoreleased with no pool in place - just leaking
我尝试添加一个自动释放池,但它给了我更糟糕的错误(这使程序停止运行),但也许我做错了?
另外,由于某种原因,在提示输入名称之后,它会在我有机会输入任何内容之前立即提示输入地址..但它只在我添加的第一个联系人上执行此操作。我不知道这是怎么发生的。
how many address would you like to input?
Running…
3
2010-11-11 12:28:15.352 addressBook[25563:a0f] *** __NSAutoreleaseNoPool(): Object 0x100111010 of class NSCFArray autoreleased with no pool in place - just leaking
Please input the name of contact
Please input the address of contact
john doe
Please input the birthday of contact
500 E. Main
等等,等等。
printf("how many address would you like to input?\n");
int numAddresses;
scanf("%i", &numAddresses);
if(numAddresses<1) return 0;
NSMutableArray * arrayOfBooks = [NSMutableArray array];
for (int i = 0; i < numAddresses; ++i) {
book * f = [[book alloc] init];
[arrayOfBooks addObject:f];
[f release];
}
unsigned count = [arrayOfBooks count];
while (count--) {
id object = [arrayOfBooks objectAtIndex:count];
printf("Please input the name of contact\n");
char inputString1[50];
if(fgets(inputString1, sizeof inputString1, stdin)){
[object setName: inputString1];
}
printf("Please input the address of contact\n");
char inputString2[50];
fgets(inputString2, sizeof inputString2, stdin);
[object setAddress: inputString2];
printf("Please input the birthday of contact \n");
char inputString3[50];
fgets(inputString3, sizeof inputString3, stdin);
[object setBirthday: inputString3];
printf("Please input the phone number of contact \n");
char inputString4[50];
fgets(inputString4, sizeof inputString4, stdin);
[object setPhoneNumber: inputString4];
[object print];
}
return 0;
提前致谢。
答案 0 :(得分:1)
如果您使用的是Objective-C,则必须使用自动释放池包装整个main函数。你这样使用它:
int main(int argc, char** argv) {
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
// real code here
[pool drain];
return 0;
}