iOS 初學者乙個關於記憶體管理的問題

2021-07-25 18:30:12 字數 2122 閱讀 6057

先上**,這個例子是   kenshincui 大神的。拿來學習使用。

car.h

#import 

@inte***ce car : nsobject

#pragma mark - 屬性

#pragma mark 車牌號

@property (nonatomic,copy) nsstring *no;

#pragma mark - 公共方法

#pragma mark 執行方法

-(void)run;

@end

car.m

#import "car.h"

@implementation car

#pragma mark - 公共方法

#pragma mark 執行方法

-(void)run

#pragma mark - 覆蓋方法

#pragma mark 重寫dealloc方法

-(void)dealloc

@end

person.h

#import 

@class car;

@inte***ce person : nsobject

#pragma mark - 屬性

#pragma mark 姓名

@property (nonatomic,copy) nsstring *name;

#pragma mark - 公共方法

#pragma mark car屬性的set方法

-(void)setcar:(car *)car;

#pragma mark  car屬性的get方法

-(car *)car;

@end

person.m

#import "person.h"

#import "car.h"

@implementation person

#pragma mark - 公共方法

#pragma mark car屬性的set方法

-(void)setcar:(car *)car

}#pragma mark  car屬性的get方法

-(car *)car

#pragma mark - 覆蓋方法

#pragma mark 重寫dealloc方法

-(void)dealloc

@end

main.h

#import 

#import "person.h"

#import "car.h"

void getcar(person *p)

int main(int argc, const char * argv) 

return 0;

}

上執行結果:

2015-10-12 22:20:32.089 1010-記憶體[380:303] retaincount(p)=1

2015-10-12 22:20:32.092 1010-記憶體[380:303] invoke car(666666) dealloc method.

2015-10-12 22:20:32.094 1010-記憶體[380:303] car(888888) run.

2015-10-12 22:20:32.095 1010-記憶體[380:303] invoke person(kenshin) dealloc method.

2015-10-12 22:20:32.096 1010-記憶體[380:303] invoke car(888888) dealloc method.

program ended with exit code: 0

問題:再getcar方法中,明明是car1**先release,為什麼卻是  invoke car(666666) dealloc method. car2先release了。

為什麼car1的release**放到了最後面?

乙個初學者的RHCE之路

乙個初學者的rhce之路 1 認清你的考試目的,rhce對於初學者來說是很難的,所以我不建議沒有準備好就報考rhce,雖然我也是如此。因為此考試通過率底,靈活性大,我見過的從事linux工作的 十分牛x的人物,考兩次都沒有通過的。所以一定要明確你自己的目的,是要從事linux工作,尤其是linux網...

給ios初學者的建議

不管你是培訓的還是在上學的或者是自學的!你選擇了這條路就要認真的對待你所學的,別出來找工作什麼都不會!首先,第一點 把你的obj c語言基礎打好,在學習obj c之前最好學一下c c 除此之外最好各課都要設計了解些,xml,json,mysql,html,js!我碰到乙個連json和xml是什麼都不...

如何從乙個初學者成乙個DBA

oracle的體系太龐大了,對於初學者來說,難免會有些無從下手的感覺,什麼都想學,結果什麼都學不好,所以把學習經驗共享一下,希望讓剛剛入門的人對oracle有乙個總體的認識,少走一些彎路。一 定位 oracle分兩大塊,一塊是開發,一塊是管理。開發主要是寫寫儲存過程 觸發器什麼的,還有就是用orac...