我已經理解了@autoreleasepool是如何工作的,我有支持ARC的xcode的最新版本。所以我可以使用它,但是我想知道它是如何在類中工作的。
讓我們假設我有這樣的接口:在ARC裏面使用@autoreleasepool
@interface AppDelegate : NSObject <NSApplicationDelegate>
{
@private
NSMutableDictionary* dictionary;
}
而且我分配和初始化在init方法字典:
- (id) init
{
self= [super init];
if(self)
{
dictionary=[[NSMutableDictionary alloc]init];
}
return self;
}
在dealloc方法我不能發送到字典中的釋放消息,因爲我在ARC之下。所以當我通常分配內存時,我會這樣做:
@autoreleasepool
{
NSMutableDictionary* dict=[[NSMutableDictionary alloc]init];
< use it>
}
PS:原諒語法錯誤,I直接編寫而不編譯。
但是在課堂上,我在哪裏放置「@autoreleasepool」塊?
順便說一下,LLVM編譯器中的一些新功能允許您在實現中聲明隱含私有的ivars。除了在你的頭文件接口文件中使用'@ private',刪除你在'@interface'下的4行並在你的.m實現文件中添加'{NSMutableDictionary * dictionary; ''執行''後面的行}。 –