[閒聊] ARC

看板MacDev作者 (zonble)時間13年前 (2011/06/09 01:46), 編輯推噓7(7016)
留言23則, 6人參與, 最新討論串1/1
WWDC 2011 到目前為止看到最有趣的東西大概就是 ARC,ARC 是 Automatic Reference Counting 的縮寫。這對很多人來說應該是 福音,簡單說就是:用 ARC 寫 Objective-C 的話,就可以不用 自己管 retain/release 了。 ARC 跟 GC 不太一樣。GC 是在 runtime 的時候,發現如果沒有 任何變數指到某個記憶體指標上,就去自動釋放這個物件;而 ARC 的原理則是在 compile time 做這件事情,compiler(看起來 要用 Apple LLVM 3.0)在編譯程式的時候,自動幫你判斷什麼地方 應該要加上 retain/release,然後自動幫你加上去。 在打開 ARC 模式之後,原本拿來管理記憶體的那些 method,就會 完全無法使用,包括 retain、release、autorelease 等…甚至 performSelector:@selector(release) 都不能用。用了之後, compiler 會馬上告訴你無法編譯。 完整文件位置:http://0rz.tw/TlnmG 這個文件要有付費 Developer Program 才能看到。 -- zonble.net cocoa.zonble.net -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.44.187.129

06/09 07:51, , 1F
新的專案可能還好,舊的就麻煩了,雖然文件說有工具可以轉…
06/09 07:51, 1F

06/09 07:52, , 2F
property的keyword也不一樣,整個習慣會改很大。
06/09 07:52, 2F

06/09 07:52, , 3F
原本的@property(retain)要改成@property(strong)
06/09 07:52, 3F

06/09 07:52, , 4F
@property(assign)變成了@property(weak)
06/09 07:52, 4F

06/09 07:53, , 5F
而且NSAutoreleasePool記得也不能用
06/09 07:53, 5F

06/09 07:54, , 6F
在iOS 5,倒是Core Image framework開放了
06/09 07:54, 6F

06/09 07:55, , 7F
CIImage可以用啦~~ 還有CIFilter~~ 覺得以後有更多的UI效果
06/09 07:55, 7F

06/09 07:55, , 8F
可以實作了
06/09 07:55, 8F

06/09 09:47, , 9F
轉換的鎮痛期不知道多久. 比較不能接受的是不能背後相容
06/09 09:47, 9F

06/09 09:48, , 10F
如果用了一些thirdparty的library..總不可能幫他們改吧
06/09 09:48, 10F

06/09 09:59, , 11F
所以蘋果一直在檔那種用 Flash 產生 iPhone app 這種事
06/09 09:59, 11F

06/09 10:00, , 12F
這種中間層一多,就很強迫整個軟體架構升級了。
06/09 10:00, 12F

06/09 21:04, , 13F
看到3rd party,突然想到ARC的另一個限制是,不能把pointer
06/09 21:04, 13F

06/09 21:04, , 14F
存放在C的struct裡。
06/09 21:04, 14F

06/09 21:10, , 15F
印象中是NSObject衍生物的pointer ~
06/09 21:10, 15F

06/10 18:16, , 16F
我比較好奇的是 share instance 會變成怎樣
06/10 18:16, 16F

06/10 18:17, , 17F
照 arc 邏輯來說 share instance 也會被加上 release
06/10 18:17, 17F

06/10 18:18, , 18F
但 FAQ 說 share instance pattern 是可以用的?
06/10 18:18, 18F

06/11 01:06, , 19F
signetone
06/11 01:06, 19F

06/11 01:07, , 20F
share instance 等影片出來就有詳細說明了
06/11 01:07, 20F

06/11 22:20, , 21F
話說 appleway 想說的應該是 singleton?
06/11 22:20, 21F

06/12 08:34, , 22F
是的,因為用iphone上BBS 發現打錯要改,結果按到送出
06/12 08:34, 22F

06/12 13:21, , 23F
欸?CIFilter出來了喔(樂)
06/12 13:21, 23F
文章代碼(AID): #1DxxLjYQ (MacDev)