作者zonble (zonble)
看板MacDev
標題[閒聊] ARC
時間Thu Jun 9 01:46:19 2011
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
1F:推 aecho:新的專案可能還好,舊的就麻煩了,雖然文件說有工具可以轉… 06/09 07:51
2F:→ aecho:property的keyword也不一樣,整個習慣會改很大。 06/09 07:52
3F:→ aecho:原本的@property(retain)要改成@property(strong) 06/09 07:52
4F:→ aecho:@property(assign)變成了@property(weak) 06/09 07:52
5F:→ aecho:而且NSAutoreleasePool記得也不能用 06/09 07:53
6F:→ aecho:在iOS 5,倒是Core Image framework開放了 06/09 07:54
7F:→ aecho:CIImage可以用啦~~ 還有CIFilter~~ 覺得以後有更多的UI效果 06/09 07:55
8F:→ aecho:可以實作了 06/09 07:55
9F:推 popcorny:轉換的鎮痛期不知道多久. 比較不能接受的是不能背後相容 06/09 09:47
10F:→ popcorny:如果用了一些thirdparty的library..總不可能幫他們改吧 06/09 09:48
11F:→ zonble:所以蘋果一直在檔那種用 Flash 產生 iPhone app 這種事 06/09 09:59
12F:→ zonble:這種中間層一多,就很強迫整個軟體架構升級了。 06/09 10:00
13F:推 aecho:看到3rd party,突然想到ARC的另一個限制是,不能把pointer 06/09 21:04
14F:→ aecho:存放在C的struct裡。 06/09 21:04
15F:推 aecho:印象中是NSObject衍生物的pointer ~ 06/09 21:10
16F:推 Xezzaosui:我比較好奇的是 share instance 會變成怎樣 06/10 18:16
17F:→ Xezzaosui:照 arc 邏輯來說 share instance 也會被加上 release 06/10 18:17
18F:→ Xezzaosui:但 FAQ 說 share instance pattern 是可以用的? 06/10 18:18
19F:推 appleway:signetone 06/11 01:06
20F:推 appleway:share instance 等影片出來就有詳細說明了 06/11 01:07
21F:→ zonble:話說 appleway 想說的應該是 singleton? 06/11 22:20
22F:→ appleway:是的,因為用iphone上BBS 發現打錯要改,結果按到送出 06/12 08:34
23F:→ hechian:欸?CIFilter出來了喔(樂) 06/12 13:21