[問題] 新手一個問題

看板MacDev作者 (asa)時間11年前 (2013/10/03 22:51), 編輯推噓1(1011)
留言12則, 5人參與, 最新討論串1/2 (看更多)
各位大大好 因為覺得觀念不太好 又重新去做了一些練習 然後有一個地方搞不懂 NSString *string = @“abc”; 跟 NSString * string = [[NSString alloc] init]; string = @"abc"; 有兩個什麼不一樣呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.74.160

10/04 06:40, , 1F
第一個是auto release物件,第二個是manual release物件
10/04 06:40, 1F

10/04 06:41, , 2F
不過這一切是要在non-ARC模式下才成立。
10/04 06:41, 2F

10/04 08:57, , 3F
這篇文章三行程式裡沒有任何一個物件會被 auto release..
10/04 08:57, 3F

10/04 19:54, , 4F
@"" 是一個 compile-time constant 在編譯時就被寫入mem
10/04 19:54, 4F

10/04 19:55, , 5F
所以你不用去管他retain或是release
10/04 19:55, 5F

10/04 23:26, , 6F
在arc下是一樣的@@?
10/04 23:26, 6F

10/05 03:51, , 7F
請問 NSString 有對 "=" 運算式做 overload嗎?
10/05 03:51, 7F

10/05 03:52, , 8F
不然第二個我覺得是 string 先指到[NSString xxx]init
10/05 03:52, 8F

10/05 03:52, , 9F
然後又指到 @"abc" constant
10/05 03:52, 9F

10/05 03:53, , 10F
所以第一個在 non-ARC 的底下 發生leak
10/05 03:53, 10F

10/05 03:54, , 11F
不知道這樣理解哪裡有誤 謝謝
10/05 03:54, 11F

10/05 11:24, , 12F
Objective-C 沒有 operator overloading 這種東西
10/05 11:24, 12F
文章代碼(AID): #1IJOHk_Z (MacDev)
討論串 (同標題文章)
文章代碼(AID): #1IJOHk_Z (MacDev)