看板 MacDev 關於我們 聯絡資訊
各位大大好 因為覺得觀念不太好 又重新去做了一些練習 然後有一個地方搞不懂 NSString *string = @“abc”; 跟 NSString * string = [[NSString alloc] init]; string = @"abc"; 有兩個什麼不一樣呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.74.160
darktt:第一個是auto release物件,第二個是manual release物件 10/04 06:40
darktt:不過這一切是要在non-ARC模式下才成立。 10/04 06:41
uranusjr:這篇文章三行程式裡沒有任何一個物件會被 auto release.. 10/04 08:57
yuanruo:@"" 是一個 compile-time constant 在編譯時就被寫入mem 10/04 19:54
yuanruo:所以你不用去管他retain或是release 10/04 19:55
sorkayi:在arc下是一樣的@@? 10/04 23:26
issuemylove:請問 NSString 有對 "=" 運算式做 overload嗎? 10/05 03:51
issuemylove:不然第二個我覺得是 string 先指到[NSString xxx]init 10/05 03:52
issuemylove:然後又指到 @"abc" constant 10/05 03:52
issuemylove:所以第一個在 non-ARC 的底下 發生leak 10/05 03:53
issuemylove:不知道這樣理解哪裡有誤 謝謝 10/05 03:54
uranusjr:Objective-C 沒有 operator overloading 這種東西 10/05 11:24