Ios 如果我用@autoreleasepool包装我的整个应用程序,我可以忽略指针吗?
如果我将UIApplicationMain包装在一个Ios 如果我用@autoreleasepool包装我的整个应用程序,我可以忽略指针吗?,ios,objective-c,Ios,Objective C,如果我将UIApplicationMain包装在一个@autoreleasepool中,这是否意味着我永远不必考虑objective C中的内存管理 例如: @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([DDAppDelegate class])); } 大多数UIApplicationmain已经包装在@autorelease池中。您仍然需要考虑内存管理,如果使用自动引用
@autoreleasepool
中,这是否意味着我永远不必考虑objective C中的内存管理
例如:
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([DDAppDelegate class]));
}
大多数UIApplicationmain已经包装在@autorelease池中。您仍然需要考虑内存管理,如果使用自动引用计数,则需要考虑的内存管理更少 您的
main
始终包装在自动释放池中:
int main(int argc, char *argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
因为这需要注册要自动释放的对象。如果您使用的是ARC
,则这也适用于无自动释放对象
您永远不必考虑内存管理。由于ARC只会跟随您的代码,因此您会生成一个静态强
变量,它不会被释放,因为您告诉编译器要保留它。只需考虑变量的减速,并使用ARC
即可减少内存管理问题
如果您正在使用任何CoreFoundation类,那么您必须自己进行所有内存管理,因为
ARC
不会对CoreFoundation类进行内存管理 首先,您需要了解obj-c中内存管理的基础。比如说
@autoreleasepool只是在创建了大量自动释放对象的情况下帮助管理内存,而且将它们全部保留到应用程序的runloop完成将非常昂贵