新手问几个关于 iOS 开发的问题 - V2EX
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 5747 次点击
    这是一个创建于 4701 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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     Solana     1465 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 16:28 PVG 00:28 LAX 09:28 JFK 12:28
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86