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
Brutal
V2EX  ›  iDev

新手问几个关于 iOS 开发的问题

  •  
  •   Brutal · 2012-11-28 16:13:11 +08:00 · 5286 次点击
    这是一个创建于 4412 天前的主题,其中的信息可能已经有所发展或是发生改变。
    0. 现在一般开发项目使用 ARC 么?
    1. 一般使用的 SDK 是 5 还是 6 ?
    2. 实践中 Storyboard 好用么 = =
    3. 小项目一般来讲 create project 的时候是用现成的 Single View 之类的还是选直接 Empty ?
    29 条回复    1970-01-01 08:00:00 +08:00
    adow
        1
    adow  
       2012-11-28 16:17:57 +08:00
    0:我还没用上arc,很想用用看;
    1:新的项目只支持ios5以上;
    2:storyboard很好用,就是觉得显示器太小;
    3:我创建的时候是选signle view 和use storyboard;
    hiessu
        2
    hiessu  
       2012-11-28 20:14:48 +08:00
    0 新项目就不用考虑了,肯定用。推荐看一下http://www.idryman.org/blog/2012/11/22/arc-best-practices-and-pitfalls/,和这篇文章提到的http://amattn.com/2011/12/07/arc_best_practices.html
    1 新项目一般iOS5+,目前要支持iOS6就最低要求是iOS4.3+,用最新版Xcode就好,SDK是iOS6的。
    2 一般,storyboard适合拆成多个用。如果不拆就会是这个样子 https://github.com/process255/Dev-Denver/wiki/iOS-Designs-to-iPhone 推荐看看http://useyourloaf.com/blog/categories/storyboard/ 这个系列,学会用还是有必要的。
    3 随便...
    alexrezit
        3
    alexrezit  
       2012-11-28 20:26:12 +08:00
    0. 不用;
    1. 所有 SDK 都用, build 时 target 用最低版本;
    2. 如果没个 27 寸的显示器就算了, 23 的用着都很烦;
    3. Empty.
    PrideChung
        4
    PrideChung  
       2012-11-30 16:47:50 +08:00
    0. ARC这么好的东西不能不用
    1. SDK5
    2. Storyboard很不错,我一直在用
    3. 随意,反正最后肯定要改得面目全非
    volCANo
        5
    volCANo  
       2012-11-30 17:13:02 +08:00
    0. 现在一般开发项目使用 ARC 么?
    推荐使用。

    1. 一般使用的 SDK 是 5 还是 6 ?
    使用最新。

    2. 实践中 Storyboard 好用么 = =
    这个没用过。。。。不过苹果官方的,我就推荐使用。

    3. 小项目一般来讲 create project 的时候是用现成的 Single View 之类的还是选直接 Empty ?
    Single View
    chisj
        6
    chisj  
       2012-11-30 19:14:07 +08:00
    0.遗留问题,没有用。但是希望以后新的项目里可以用上。
    1.最新
    2.没用过。
    3.empty.
    bytelee
        7
    bytelee  
       2012-11-30 22:37:16 +08:00
    反正开发越来月方便,不过storyboard没用过,看上去简便,但是目前还不能接收这个方式 以后会用用
    nil
        8
    nil  
       2012-12-01 14:51:36 +08:00
    0.不用arc纯属找虐
    1.sdk永远用最新吧?
    2.兼容是永远的痛,还是手写吧
    3.忘了
    hoogle
        9
    hoogle  
       2012-12-01 15:54:06 +08:00
    还是很多差异呢。。

    ARC必用。。。除非你想支持4.3以前的古董机器。。或者找虐。。
    SDK 最新正式版,, 现在6的sdk也支持到4.3的系统。。
    Storyboard。。 自己不推荐用。。 自己小项目还好。。虽然说看着很帅,但如果修改起来就悲剧了。出问题也找的累。。 还是改代码来的方便。
    alexrezit
        10
    alexrezit  
       2012-12-01 15:58:51 +08:00
    @nil
    @hoogle
    不能这么说吧? 表示从 3.0 就开始写了, 不用 ARC 反倒不习惯.
    PrideChung
        11
    PrideChung  
       2012-12-01 16:57:23 +08:00
    @hoogle 好像很多人都不爱用Storyboard?那是用nib还是干脆纯手写界面?我自己用着还挺顺手的。
    nil
        12
    nil  
       2012-12-01 18:56:54 +08:00
    @alexrezit 没看明白,用还是不用呢?
    davyRice
        13
    davyRice  
       2012-12-01 19:00:50 +08:00
    @hoogle 不明白为什么不用arc就是找虐 。。。
    alexrezit
        14
    alexrezit  
       2012-12-01 20:11:19 +08:00
    @nil 反正我是不用的. 不明白為什麼不用就是找虐.
    luanma
        15
    luanma  
       2012-12-01 23:10:41 +08:00
    0. 现在一般开发项目使用 ARC 么?
    - 能少写不少代码,提高工作效率,肯定用。

    1. 一般使用的 SDK 是 5 还是 6 ?
    - 用最新的,目前兼容到4.3。不过ios 6里的auto layout, embed segue还用不上,这都是提高开发效率的新功能啊。
    目前还有一半用户使用ios5所以,使用xcode5.5.2的sb时,注意一定要关闭auto layout

    2. 实践中 Storyboard 好用么 = =
    - 好用。

    3. 小项目一般来讲 create project 的时候是用现成的 Single View 之类的还是选直接 Empty ?
    hoogle
        16
    hoogle  
       2012-12-01 23:44:58 +08:00
    @alexrezit 一样的效果,但非ARC要多出一部分内存管理的代码。。 写不写都可以的代码,非要写,必须是找虐了。。。 不过主要还是看自己习惯来选吧。。
    hoogle
        17
    hoogle  
       2012-12-01 23:58:04 +08:00
    @PrideChung 还是看自己习惯选。。 感觉看代码对程序比较清晰,控制也比较方便,, 倒是nib、storyboard找各种属性、界面比较觉得麻烦。。。 storyboard能省很多代码。。
    lonelybug
        18
    lonelybug  
       2012-12-01 23:59:00 +08:00
    ARC好用
    看你的市场是那里,如果是国内SDK5也需要测试一下。当然,换SDK不同来测试在Xcode上不难。
    不建议,你最好先从Xib和自己写一些代码入手,这样你了解内部机制,对你以后debug和定制自己的特效有帮助。
    empty view那个一般用来作为你打算定制一个UI部件用的,比如UITableViewCell。
    alexrezit
        19
    alexrezit  
       2012-12-02 00:29:44 +08:00
    @hoogle

    但是一直习惯木有 ARC 呢... orz

    就那些传言我特意去搜索了一下. ARC 不比 non ARC 快, 而是要慢很多, 因为 compiler 在处理内存的时候采取的方式较为保守. 如果把 Foundation Class 转换为 CF Class (这一过程是 toll-free 的) 的话, 也没有 non ARC 速度快.

    至于经常被人们传的 "2-6 倍" 这个数值, 我只在文档中找到 @autoreleasepool 比 NSAutoreleasePool 快六倍的字眼.

    另外附上我亲自测试的结果如下:
    non ARC 速度大概是 ARC 的两倍, 而 ARC 使用 bridge 之后也只能缩短不到三分之一的时间. 仍然和 non ARC 有三分之一的速度差距.

    所以可以得出结论: ARC 适合对内存管理不熟练的菜鸟, 如果要达到最高的效率还是要用 non ARC. (虽然实际使用中不会差很多)
    PrideChung
        20
    PrideChung  
       2012-12-02 03:33:21 +08:00
    @alexrezit 还有这等事?我一直以为ARC只是帮你把release之类的内存管理代码补上,性能方面没区别。不过大部分app都不会因为用了ARC而引起性能问题吧。
    Gal3rielol
        21
    Gal3rielol  
       2012-12-02 11:12:33 +08:00
    ARC和Manual性能比较时候采取的方法是什么, 直接说结论是没有说服力的.
    alexrezit
        22
    alexrezit  
       2012-12-02 11:27:57 +08:00
    @Gal3rielol
    生成一个超大的 array, 开始计时, 用一个 id 分别指向 array 中的每一个 element, 停止计时, 取 30 次的平均值.

    bridge 写法:
    obj = (__bridge __unsafe_unretained id)CFArrayGetValueAtIndex((__bridge CFArrayRef)arr, n - 1);
    nil
        23
    nil  
       2012-12-02 13:32:43 +08:00
    @alexrezit 菜鸟用ARC,懒人用ARC~ 我即是菜鸟,又是懒人,所以觉得不用ARC是找虐,呵呵
    alexrezit
        24
    alexrezit  
       2012-12-02 15:03:31 +08:00
    @nil 嘛~ 我更懒, 以至于懒得换 ARC. (永远不要和我比谁吃的多和比谁更懒~
    nil
        25
    nil  
       2012-12-02 15:46:48 +08:00
    @alexrezit 看了下你的博客,牛人啊, pythoner,不过不明白用python的人为什么不喜欢半自动化的内存管理,喜欢敲autorelease? 代码倒是不见得多多少,不过人总有马虎的时候,编译器却不会,呵呵。
    alexrezit
        26
    alexrezit  
       2012-12-02 16:21:11 +08:00
    @nil
    谁说我是 pythoner 了... orz 我要是能被称为 pythoner 那这个世界上所有人都是 pythoner 了.
    Xcode 有 static analyse 的功能, 一般不会出内存泄露的问题.
    之前在 CC 讨论了 ARC 这个: http://www.cocoachina.com/bbs/read.php?tid=127426&page=2

    引用 neogui 的话:
    > 效率我觉得ARC总会有所牺牲,但是使用ARC会带来一些别的benefit,所以要不要用这个东西还是case by case吧...
    > 我之前一直用MRR,因为ARC先前不支持对struct的成员assign Objective-C对象的指针,后来支持了我也就无所谓了,两个都用,新的代码一般就直接ARC了,老的代码懒得去动.

    还是看情况吧, 毕竟老的习惯不好改.
    nil
        27
    nil  
       2012-12-02 17:12:58 +08:00
    @alexrezit
    1.苹果官方的说法是效率高了不少,毕竟自动化之后方便优化嘛~ 而且ARC主要只是机器生成一些冗余代码,理论上来说不会慢吧~ 5.0以后支持弱引用,绝对是好东西。
    第二条觉得算是陋习,xcode提供了不错的重构支持,不用白不用嘛~
    不喜欢cocoachina.
    krafttuc
        28
    krafttuc  
       2012-12-03 11:48:59 +08:00
    0. 现在一般开发项目使用 ARC 么?
    ARC好东西,不用白不用。可以看看Sam Soffes的博文:http://soff.es/automatic-reference-counting
    1. 一般使用的 SDK 是 5 还是 6 ?
    最新的,目前是6。
    2. 实践中 Storyboard 好用么 = =
    很好用,但我更喜欢在代码里写。
    3. 小项目一般来讲 create project 的时候是用现成的 Single View 之类的还是选直接 Empty ?
    无所谓,只是一点点boilerplate code而已。
    leafduo
        29
    leafduo  
       2012-12-03 11:59:39 +08:00
    ARC 要用
    SDK6
    纯代码写
    一样的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2685 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 75ms · UTC 12:52 · PVG 20:52 · LAX 04:52 · JFK 07:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.