代码:
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
Apple的文档明确指出:
返回值: 即使指定了整数返回类型,此函数也不会返回。当用户通过按Home键终止iPhone应用程序时,应用程序会立即通过调用退出系统函数退出,参数为零。
其次,在
int UIApplicationMain (
int argc,
char *argv[],
NSString *principalClassName,
NSString *delegateClassName
);
我们如何从UIApplication子类访问argv?
答案 0 :(得分:8)
自动释放池不会被释放。相反,操作系统只是将您的应用程序从内存中删除。
答案 1 :(得分:3)
至于argc
和argv
Apple文档的值如下:
NSApplicationMain本身忽略了 argc和argv参数。代替, Cocoa间接得到了它的论据 通过_NSGetArgv,_NSGetArgc和 _NSGetEnviron(见[crt_externs.h])。g
答案 2 :(得分:1)
主autorelease
池可能不会被释放,但UIApplicationMain
有一个事件处理程序循环,在每个事件之后将其排出。
正如Apple文档所述:(在iOS部分“明确分配内存”一节中)
使用自动释放释放的对象 方法留在记忆中直到你 明确地消耗电流 自动释放池或直到下一个 事件循环的时间。