搜尋

首頁  >  問答  >  主體

objective-c - IOS非ARC下 的 下面代码因为什么内存泄露,给个修改方案~plz

    NSObject *obj1 = [[NSObject alloc]init];
    NSObject *obj2 = [[NSObject alloc]init];
   
    obj1 = [obj2 retain];
    [obj1 release];
    [obj2 release];
大家讲道理大家讲道理2773 天前788

全部回覆(1)我來回復

  • PHPz

    PHPz2017-04-17 17:11:19

    這個在obj1 = [obj2 retain];這一句,把obj1的指針指到obj2那塊兒去了,所以obj1原來指的那塊空間就沒人管了,就洩漏了。 obj1 = [obj2 retain];这一句,把obj1的指针指到obj2那块儿去了,所以obj1原来指的那块空间就没人管了,就泄漏了。

    所以单就这个问题而言是obj1 = [obj2 retain];前面就要[obj1 release];

    所以單就這個問題而言是obj1 = [obj2 retain];前面就要[obj1 release];,至於在工程規範上應該怎麼樣我也不清楚,沒怎麼寫過非ARC 的。如果不是為了面試,還是盡量用 ARC 吧。 🎜

    回覆
    0
  • 取消回覆