作者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