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