objective-c中@autoreleasepool的用法

简介:

objc中关于自动释放池,有两种语法,一种old-fashioned是:

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//do something...
[pool release];

那么新的语法是:

@autoreleasepool{
    //do something
}

可以明显看出,后者比前者语法要简单,那么新式和旧式的语法有神马区别呢?
apple dev里有清楚的说明:
NSAutoreleasePool class用来支持Cocoa的引用计数内存管理系统。如果你使用ARC,你不能直接使用autoreleasepool,作为替代,你可以使用@autoreleasepool块的语法:

If you use Automatic Reference Counting (ARC), you cannot use autorelease pools directly. Instead, you use @autoreleasepool blocks. For example, in place of:

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    // Code benefitting from a local autorelease pool.
    [pool release];

you would write:

    @autoreleasepool {
        // Code benefitting from a local autorelease pool.
    }

但随后文档也说了:@autoreleasepool块的语法更有效率,所以你也可以在不使用ARC的情况下使用该语法。

相关文章
|
7月前
|
安全 编译器 Swift
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
435 2
|
5月前
|
开发工具 iOS开发 容器
【Azure Blob】关闭Blob 匿名访问,iOS Objective-C SDK连接Storage Account报错
iOS Objective-C 应用连接Azure Storage时,若不关闭账号的匿名访问,程序能正常运行。但关闭匿名访问后,上传到容器时会出现错误:“Public access is not permitted”。解决方法是将创建容器时的公共访问类型从`AZSContainerPublicAccessTypeContainer`改为`AZSContainerPublicAccessTypeOff`,以确保通过授权请求访问。
【Azure Blob】关闭Blob 匿名访问,iOS Objective-C SDK连接Storage Account报错
|
7月前
|
缓存 开发工具 iOS开发
优化iOS中Objective-C代码调起支付流程的速度
优化iOS中Objective-C代码调起支付流程的速度
125 2
|
7月前
|
安全 JavaScript 前端开发
IOS开发基础知识:介绍一下 Swift 和 Objective-C,它们之间有什么区别?
IOS开发基础知识:介绍一下 Swift 和 Objective-C,它们之间有什么区别?
323 0
|
iOS开发 容器
iOS 代码规范格式 Objective-C(上)
iOS 代码规范格式 Objective-C
441 0
iOS 代码规范格式 Objective-C(上)
|
编译器 API iOS开发
iOS 代码规范格式 Objective-C(下)
iOS 代码规范格式 Objective-C(下)
244 0