應用場景與上乙個分析場景相同,都是人去擁有一輛車,這次的問題是我不是去重新擁有一輛車,而是我去多次set同一輛車的時候,會存在一些問題,如:
#import
#import
"person.h"
int main(int argc, const
char * argv)
return
0;}
#import
#import "car.h"
@inte***ce
person : nsobject
- (void)setcar:(car *)car;
- (car *)car;
- (void)driver;
@end
#import "person.h"
@implementation
person
- (void)setcar:(car *)car
- (car *)car
- (void)driver
- (void)dealloc
@end
#import "car.h"
@implementation
car- (void)run
- (void)dealloc
@end
上面的方法導致的問題就是物件會被提前釋放掉,因此:對person類中的set方法進行修改後:
#import "person.h"
@implementation
person
- (void)setcar:(car *)car
}- (car *)car
- (void)driver
- (void)dealloc
@end
說明:只有當set的不是同乙個物件的時候,我才把原來的物件的計數器值減一,將原來的物件銷毀掉,防止記憶體洩露 set方法記憶體分析 1
這個之前的記憶體管理分析中,存在一些問題,比如說在多個物件中,要保證乙個物件沒有被系統 之前,不能被銷毀掉,就像下面的這個demo一樣,person有一輛車,但是他覺得這輛車他不喜歡了,他想換一輛車,那我有2個car的物件,該怎麼去處理這個記憶體管理的問題.import import person....
set方法與記憶體管理
區域性變數,使用完以後不再使用就release 全域性變數,在dealloc裡面release。指標物件要自己操作自己。retaincount指的是物件引用計數。self賦值方式 computer cmp computer alloc init cmp物件retaincount 1 self.com...
set方法的記憶體管理細節
一 多個物件之間的記憶體管理 1.你想使用 占用 某個物件,就應該讓物件的計數器 1 讓物件做一次retain操作 2.你不想再使用 占用 某個物件,就應該讓物件的計數器 1 讓物件做一次release 3.誰retain,誰release 4.誰alloc,誰release 二 set方法的記憶體...