NSObject *obj1 = [[NSObject alloc]init]; NSObject *obj2 = [[NSObject alloc]init]; obj1 = [obj2 retain]; [obj1 release]; [obj2 release];
光阴似箭催人老,日月如移越少年。
這個在obj1 = [obj2 retain];這一句,把obj1的指針指到obj2那塊兒去了,所以obj1原來指的那塊空間就沒人管了,就洩漏了。 obj1 = [obj2 retain];这一句,把obj1的指针指到obj2那块儿去了,所以obj1原来指的那块空间就没人管了,就泄漏了。
obj1 = [obj2 retain];
obj1
obj2
所以单就这个问题而言是obj1 = [obj2 retain];前面就要[obj1 release];
[obj1 release];
這個在
obj1 = [obj2 retain];
這一句,把obj1
的指針指到obj2
那塊兒去了,所以obj1
原來指的那塊空間就沒人管了,就洩漏了。obj1 = [obj2 retain];
这一句,把obj1
的指针指到obj2
那块儿去了,所以obj1
原来指的那块空间就没人管了,就泄漏了。所以单就这个问题而言是
所以單就這個問題而言是obj1 = [obj2 retain];
前面就要[obj1 release];
obj1 = [obj2 retain];
前面就要[obj1 release];
,至於在工程規範上應該怎麼樣我也不清楚,沒怎麼寫過非ARC 的。如果不是為了面試,還是盡量用 ARC 吧。 🎜