oc53 autorelease注意事項

2021-09-22 06:05:10 字數 1236 閱讀 3742

//

//autorelease注意事項

#import

#import

"person.h

"int main(int argc, const

char *ar**)

//1.一定要在自動釋放池中呼叫autorelease, 才會將物件放入自動釋放池中

person *p4 =[[[person alloc] init] autorelease];

//4.乙個程式中可以建立n個自動釋放池, 並且自動釋放池還可以巢狀

//如果存在多個自動釋放池的時候, 自動釋放池是以 "棧" 的形式儲存的

//棧的特點: 先進後出

//給乙個物件方法傳送一條autorelease訊息, 永遠會將物件放到棧頂的自動釋放池

@autoreleasepool

//第三個釋放池銷毀,會將p釋放。

person *p1 = [[[person alloc] init] autorelease];//

放在第二個釋放池裡面,因為第二個池子在最上面,}//

第二個釋放池銷毀,此時p1會銷毀

}//第乙個釋放池銷毀

@autoreleasepool

return0;

}

//

//自動釋放池大物件問題

////

created by xiaomage on 15/6/26.

////

#import

"viewcontroller.h

"#import

"person.h

"@inte***ce

viewcontroller ()

@end

@implementation

viewcontroller

- (void)touchesbegan:(nsset *)touches withevent:(uievent *)event

*///

2.盡量不要再自動釋放池中使用迴圈, 特別是迴圈的次數非常多, 並且還非常占用記憶體

@autoreleasepool

} //只有執行到這一行, 所有的物件才會被釋放

/*for (int i = 0; i < 99999; ++i) // 執行到這一行, 自動釋放池就釋放了

}*/nslog(

@"--------");

}@end