关于垃圾回收的问题

2012-12-05 11:43:01 +08:00
 zythum
貌似cocoa给出了好几种内存回收的方法。
但是查了一些或者找了一些还是不是很懂的样子。求教~~~~~~~往

恩。
1. 是不是所有情况都可以用Garbage Collection。如果可以感觉最简单。不用就指向nil就可以了
2. Garbage Collection开启的开关在哪里,朱一找了很久没找到。xcode 4.5.2
3. 不知道再问些什么了。闵那随便说点感觉重点的东西吧。


喵,卖个萌 (((o(*゚▽゚*)o)))
2994 次点击
所在节点    iDev
10 条回复
messense
2012-12-05 11:51:39 +08:00
我记得 Objective-C 用的是 reference count 而不是 garbage collection.

Xcode 4.5.2 肯定是支持 ARC (Automatic Reference
Count) 的,几乎不必自己去 retain/release/autorelease 了,况且 ARC 开启的情况下是不允许手动 retain and etc. 的。要注意就的是 Cocoa 和 Core Foundation 之间转换的时候要用到 __bridge 什么的手动转换。

ARC 下还要注意的就是强引用循环的问题,尤其在使用 block 的时候。
Brutal
2012-12-05 11:53:47 +08:00
开启 ARC 后就不用手动 release 了。
然后要是引用了非 ARC 的库类,得需要 Build Phases 里设置一个 flag,具体搜一下就可以了。

LS 说的那个 __bridge Xcode 会提示的。
zythum
2012-12-05 12:26:41 +08:00
@messense
@Brutal
那就是说不用的就指向nil就可以了,的说?
messense
2012-12-05 12:58:21 +08:00
@zythum ARC 不需要。
zythum
2012-12-05 13:14:45 +08:00
@messense 那就啥都不用管。 都不需要这个概念了么?
messense
2012-12-05 14:01:42 +08:00
@zythum 现在开发的话一般都开启 ARC,基本不用管了。当然不排除有人喜欢自己手动管理内存。

这有个以前讨论开不开启 ARC 的帖子:

http://www.v2ex.com/t/25744
ultragtx
2012-12-05 14:21:31 +08:00
1.Garbage Collection 貌似已经被水果废弃了,所以就算能用也不推荐用
2.内存管理参考文档的 Advanced Memory Management Programming Guide
3.ARC一个简单但不是非常准确的理解就是:帮你写[xxx release]
4.ARC不是万能的,感觉想躲过内存管理应该是不可能的。

推荐还是先看一眼内存管理,其实挺简单的,我学的时候还没ARC,不知道不懂内存管理直接用是什么感觉,反正懂内存管理再过渡到ARC也就是10分钟的事儿。
freewizard
2012-12-05 15:00:36 +08:00
@zythum Mac下的GC已经不推荐了,非要用问题也很多;iOS就压根没支持过GC。
ARC基本是首选了,除非要支持 iOS <=4 / OS X <=10.6 且用到了weak。
yyfearth
2012-12-05 21:22:57 +08:00
@zythum 朱一啥时候开始弄ObjC了?
zythum
2012-12-05 21:37:09 +08:00
@yyfearth 开始看看么。没做过native的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/54131

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX