解決IOS編程中內(nèi)存分配與釋放問題
解決IOS編程中內(nèi)存分配與釋放問題是本文要介紹的內(nèi)容,主要是來學(xué)習(xí)IOS應(yīng)用中內(nèi)存是如何來分配和釋放的問題,不多說,來看本文詳解。
在ios編程中是離不開內(nèi)存操作的,剛接觸ios編程時總是因為這樣那樣的內(nèi)存問題而導(dǎo)致程序crash掉。其實ios編程中內(nèi)存的釋放還是比較簡單的,只需要release或autorelease你自己retain、new、alloc、copy和mutableCopy的對象即可。一個原則就是:你分配了存,你就負責(zé)釋放。
另外要注意的就是很多方法會自動retain被添加的對象,比如:
- NSString *test = [[NSString alloc] initWithFormat: @"%d", 111];
- NSLog(@"%d", [test retainCount]);//此時test的retain為1
- NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:test, nil];
- NSLog(@"%d", [test retainCount]);//此時test的retain為2,因為array中添加了test對象,所以test會被retain
- [array addObject:test];
- NSLog(@"%d", [test retainCount]);//此時test的retain為3,因為array中又添加了test對象,所以test會被retain
- [array release];
- NSLog(@"%d", [test retainCount]);//此時test的retain為1,array被釋放,它會自動釋放自己內(nèi)部的對象,所以test的retain count又變回1
所以在調(diào)用類似addObject:test這樣的方法后,如果你不在使用test對象了,請一定釋放它,而不用擔(dān)心“如果我釋放了test,那么array中的test是不是會沒有了啊?”這樣的問題,如果你不釋放它反而會導(dǎo)致內(nèi)存的泄漏。
retainCount類似java中的引用計數(shù),當(dāng)retainCount為0時,就會調(diào)用該對象的dealloc方法從而釋放該對象。
小結(jié):解決IOS編程中內(nèi)存分配與釋放問題的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對你有所幫助!