Ios 如果我用@autoreleasepool包装我的整个应用程序,我可以忽略指针吗?

Ios 如果我用@autoreleasepool包装我的整个应用程序,我可以忽略指针吗?,ios,objective-c,Ios,Objective C,如果我将UIApplicationMain包装在一个@autoreleasepool中,这是否意味着我永远不必考虑objective C中的内存管理 例如: @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([DDAppDelegate class])); } 大多数UIApplicationmain已经包装在@autorelease池中。您仍然需要考虑内存管理,如果使用自动引用

如果我将UIApplicationMain包装在一个
@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完成将非常昂贵