V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
zythum
V2EX  ›  iDev

关于垃圾回收的问题

  •  
  •   zythum ·
    zythum · 2012-12-05 11:43:01 +08:00 · 2983 次点击
    这是一个创建于 4162 天前的主题,其中的信息可能已经有所发展或是发生改变。
    貌似cocoa给出了好几种内存回收的方法。
    但是查了一些或者找了一些还是不是很懂的样子。求教~~~~~~~往

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


    喵,卖个萌 (((o(*゚▽゚*)o)))
    10 条回复    1970-01-01 08:00:00 +08:00
    messense
        1
    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
        2
    Brutal  
       2012-12-05 11:53:47 +08:00
    开启 ARC 后就不用手动 release 了。
    然后要是引用了非 ARC 的库类,得需要 Build Phases 里设置一个 flag,具体搜一下就可以了。

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

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

    http://www.v2ex.com/t/25744
    ultragtx
        7
    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
        8
    freewizard  
       2012-12-05 15:00:36 +08:00   ❤️ 1
    @zythum Mac下的GC已经不推荐了,非要用问题也很多;iOS就压根没支持过GC。
    ARC基本是首选了,除非要支持 iOS <=4 / OS X <=10.6 且用到了weak。
    yyfearth
        9
    yyfearth  
       2012-12-05 21:22:57 +08:00
    @zythum 朱一啥时候开始弄ObjC了?
    zythum
        10
    zythum  
    OP
       2012-12-05 21:37:09 +08:00
    @yyfearth 开始看看么。没做过native的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5392 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 06:00 · PVG 14:00 · LAX 23:00 · JFK 02:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.