詳解IOS開發學習筆記案例分析
IOS開發學習筆記案例分析是本文要介紹的內容,主要講解ViewDidUnload使用方法和iOS 5的內存管理例子的內容,來看詳細內容。
ViewDidUnload使用方法
當系統內存吃緊的時候會調用該方法(注:viewController沒有被dealloc)
內存吃緊時,在iPhone OS 3.0之前didReceiveMemoryWarning是釋放無用內存的***方式,但是OS 3.0及以后viewDidUnload方法是更好的方式
在該方法中將所有IBOutlet(無論是property還是實例變量)置為nil(系統release view時已經將其release掉了)
在該方法中釋放其他與view有關的對象、其他在運行時創建(但非系統必須)的對象、以及在viewDidLoad中被創建的對象
release對象后,將對象置為nil(IBOutlet只需要將其置為nil,系統release view時已經將其release掉了)
一般認為viewDidUnload是viewDidLoad的鏡像,因為當view被重新請求時,viewDidLoad還會重新被執行
viewDidUnload中被release的對象必須是很容易被重新創建的對象(比如在viewDidLoad或其他方法中創建的對象),不要release用戶數據或其他很難被重新創建的對象
iOS 5的內存管理例子
iOS5中使用了Objective-C Automatic Reference Counting 自動引用計數機制,在編程中不需要我們主動retain/release/autorelease一個對象了。
MyClass的dealloc中打印了
- NSLog(@"%s %d", __FUNCTION__, __LINE__);
在AppDelegateDidFinishLaunching中做如下處理:
- NSLog(@"before 1");
- {
- static MyClass *m = nil;
- m = [[MyClass alloc] init]; // m沒有被銷毀,所指向對象也沒有被銷毀
- }
- NSLog(@"after 1");
- NSLog(@"before 2");
- {
- MyClass *m = nil;
- m = [[MyClass alloc] init]; // m被銷毀,對象同時也被銷毀。
- }
打印結果:
- 2011-07-10 00:59:44.556 aaaaa[4965:207] before
- 2011-07-10 00:59:44.558 aaaaa[4965:207] after
- 2011-07-10 00:59:44.558 aaaaa[4965:207] before
- 2011-07-10 00:59:44.558 aaaaa[4965:207] -[MyClass dealloc] 25
- 2011-07-10 00:59:44.559 aaaaa[4965:207] after
小結:IOS開發學習筆記案例分析的內容介紹完了,希望通過本文的學習能對你有所幫助!