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對象後,將對象置為nilIBOutlet只需要將其置為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開發學習筆記案例分析的內容介紹完了,希望通過本文的學習能對你有所協助!