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

学习 iOS 开发的小伙伴们,交流一下学习经验吧?

  •  1
     
  •   hustlzp ·
    hustlzp · 2014-06-27 20:36:48 +08:00 · 5657 次点击
    这是一个创建于 3796 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前一直在做Web,一直想接触移动互联网。一开始的时候是准备学习Android,但考虑到Android兼容性以及对Java的小白,后来就果断入了iPhone转投iOS的阵营了。我的目标比较明确,就是为自己的一个业余项目做一款App。

    我自己的一些策略:

    * 先学基于Obj-C的开发教程

    虽然Swift出来了,但毕竟框架本身的知识是逃不掉了的,Swift只是一种优雅的“表达方式”,无法从根本上降低门槛。以后再学Swift吧,学了重构Obj-C做的版本。

    * 看Big Nerd Ranch的电子书

    这个应该是公认的非常不错的教程,英文的看起来有点慢,最近也有点忙,所以断断续续地一直拖...每看一章就在XCode上跟着它的节奏敲敲代码,然后做一点笔记: http://wiki.hustlzp.com

    * 有选择的看:

    由于我要做的App v1.0版的功能非常简单,用到的特性很少,所以是挑着看,从头到尾地看速度有点慢。有些东西(比如Camera、手势、AutoLayout等)先跳过,以后需要的时候再去折腾这些东西。然后v1.0的核心是SQLite,所以CoreData部分得重点关注。

    * 中文书《iOS开发指南》

    买了本《iOS开发指南:从零基础到App Store上架》,这本书虽然网上吐槽的人很多,但挺全面的,可以看出作者在这方面的经验确实比较丰富,做个参考也好。

    希望能够在未来2个月的碎片时间中能够出第一个自己的iOS App。出了后就开始研究Design,然后购买开发者账号,然后尝试上架。再接着就是学习Swift,重构之。再接着就是出v2.0版,开始研究与Server的交互。

    V2的各位小伙伴们,相互交流一下学习经验吧?这样也少走一点不必要的弯路。
    第 1 条附言  ·  2014-06-28 16:09:06 +08:00
    @wezzard 刚刚入了开发者账号,感谢。
    44 条回复    2014-09-04 17:48:28 +08:00
    blacktulip
        1
    blacktulip  
       2014-06-27 20:41:47 +08:00   ❤️ 1
    我觉得 cocoa 从 ObjC 入手和从 swift 入手应该都能学吧
    hustlzp
        2
    hustlzp  
    OP
       2014-06-27 20:43:22 +08:00
    @blacktulip 应该是的,只不过我是在简单的熟悉了Obj-C后,Swift才出了。习惯了Obj-C的语法,所以打算把Swift放在后面。
    dorentus
        3
    dorentus  
       2014-06-27 20:47:30 +08:00   ❤️ 2
    SQLite 和 CoreData 无关的啊,虽说好像 CoreData 底层是用的 SQLite,但是一般来说,你用 CoreData 的话就不会直接用 SQLite,用 SQLite 的话也就不会去用 CoreData。
    qq2511296
        4
    qq2511296  
       2014-06-27 20:54:50 +08:00   ❤️ 1
    《iOS开发指南:从零基础到App Store上架》
    这本 你单纯看书会坑死的
    WildCat
        5
    WildCat  
       2014-06-27 20:58:01 +08:00   ❤️ 1
    http://www.appcoda.com/ios-programming-course/
    这个不错,英文不错的话可以看看哦。

    《iOS开发指南:从零基础到App Store上架》这本书还是可以看的,不过有的例子太大。

    我的见解是,OC看看语法就可以了,会用Swift调用OC即可,编码直接Swift吧。
    我也是新手,不过这里有大牛的看法:
    http://onevcat.com/2014/06/my-opinion-about-swift/

    Cool,我可以现在就使用 Swift 么?

    Swift 作为 Apple 钦定的 objc 的继承者,作为 iOS/Mac 开发者的话,是觉得必须和值得学习和使用的。现在 Swift 可以和原来的 objc 或者 c 系的代码混用(注意,不同于 objc 和 c++ 或者 c 在同一个 .mm 文件中的混编,swift 文件不能和 objc 代码写在同一个文件中,你需要将两种代码分开)。编译出来的二进制文件是可以运行在 iOS 7 和 iOS 8 的设备上的(iOS 6 及之前的是不支持的)。虽然我没有尝试过,但是使用新的 clang 对 swift 进行编译的 app 二进制包,只要你的 target 是 iOS 7 及以上的话,应该现在就可以往 App Store 进行提交。

    一个很好的消息是 Xcode 6 中应该是所有的文档都有 objc 和 swift 两种语言版本了,所以在文档支持上应该不是问题。而按照 Apple 开发者社区的一贯的跟进速度,有理由相信在不久的将来,Apple 很可能会果断 drop 掉 objc 的支持,而全面转向 swift。所以,关于标题里的这个问题的答案,我个人的建议是,尽快学习,尽快开始使用。如果你有一定的脚本语言的基础(Ruby 最好,Python 或者 JS 什么的也很不错),又比较了解 Cocoa 框架的思想的话,转型到新的语言应该完全不是问题。你会发现以前很多 objc 实现起来很郁闷的事情,在新语言下都易如反掌。我毫不忌讳地说,在 Apple 无数工程师和语言设计天才的努力下,Swift 吸收了众多语言的精华,应该是现在这个世界上最新(这不是废话么),也是最先进的一门编程语言(之一)了。而我认为,也正是 Apple 对这门语言有这样的自信,才会在这么一个可以说公司还在全盛的时候,不守陈规、如此大胆地进行语言的更换。因为 Apple 必定比你我都精于算计,切换语言带来的利益必须远大于弊端,才会值得冒如此大的风险。在这个意义上来说,今天的发布会就是程序开发业界的一枚重磅炸弹,也必将写入史册,而你我其实真的身在其中,变成了这段历史的见证者。


    需要注意的是,目前Swift编写的程序应该还不能提交到App Store,得等正式版Xcode发布才可以。
    kawhi
        6
    kawhi  
       2014-06-27 21:01:40 +08:00   ❤️ 1
    Swift 感觉语法比较亲近 Web 开发者,但现在 Swift 的系统教程还是比较少,确实觉得先弄 Objective-C 比较有效率。 感觉初学 iOS 最难得还是 cocoa 那块,objc 其实还好。。。

    我觉得斯坦福那个课程确实好,但个人感觉视频太拖节奏了,书又找不到太好的。习惯是每节课按照他给的 lecture notes 上面的重点去 Google。

    看到了一个斯坦福 iOS 课程不错的笔记(http://iiiyu.com/2012/02/28/learning-ios-notes-one/),可以参考~

    后面就是去网上找一些开源的应用看源代码,仿写之类的。现在只是看=.=

    其实我觉得最快的还是有个 idea 然后去实现,哪里不会就去搜相关内容学习,通过项目学习。可是暂时没啥具体的想法。。
    blacktulip
        7
    blacktulip  
       2014-06-27 21:04:54 +08:00   ❤️ 2
    反正我已经受够了 NSBlahBlah @".." [[[Blah alloc] init] whatever] 了,您们谁爱学就去学吧...
    hustlzp
        8
    hustlzp  
    OP
       2014-06-27 21:05:27 +08:00
    @dorentus 额...好像确实没什么关系。请教一下,我的App需要在程序中预先准备一个sqlite数据库文件(或者其他类型的数据源,类似一种preload),然后通过CoreData来操作它,请问这样做是比较好的做法吗?
    hustlzp
        9
    hustlzp  
    OP
       2014-06-27 21:07:36 +08:00
    @WildCat 非常感谢,看来我需要尝试用Swift来写代码了。
    hustlzp
        10
    hustlzp  
    OP
       2014-06-27 21:08:33 +08:00
    @blacktulip 额...Swift确实优雅,这几天研究下Swift。
    hustlzp
        11
    hustlzp  
    OP
       2014-06-27 21:09:03 +08:00
    @qq2511296 这样啊...好吧,我被坑了...
    hustlzp
        12
    hustlzp  
    OP
       2014-06-27 21:10:00 +08:00
    @kawhi 是的,我觉得Obj-C一天就可以了。
    hustlzp
        13
    hustlzp  
    OP
       2014-06-27 21:10:30 +08:00
    @kawhi 是的,我觉得Obj-C本身花不了太多时间,只不过语法有点怪。
    sd4399340
        14
    sd4399340  
       2014-06-27 21:10:43 +08:00
    在看斯坦福的视频~
    WildCat
        15
    WildCat  
       2014-06-27 21:33:03 +08:00
    @hustlzp 卧槽,HUST……
    HUST在V2的好多……说不定你就认识我喜欢的女孩子的男盆友😂233
    dorentus
        16
    dorentus  
       2014-06-27 21:40:59 +08:00   ❤️ 1
    @hustlzp 我没用过 CoreData,不过就你的这个描述看来似乎没啥问题。
    dorentus
        17
    dorentus  
       2014-06-27 21:43:25 +08:00   ❤️ 1
    @dorentus 不过稍微觉得有些奇怪……

    具体是什么样的数据要这样处理呢?
    hustlzp
        18
    hustlzp  
    OP
       2014-06-27 21:58:43 +08:00
    @dorentus 我想要做的App是我的一个个人项目: http://www.xichuangzhu.com 的手机应用,说白了就是浏览一些古诗词。现在实现了MySQL->SQLite的数据转换脚本,然后希望把生成的SQLite文件放到iOS应用中,直接读取显示就OK...
    refear99
        19
    refear99  
       2014-06-27 22:00:25 +08:00
    我觉得你书看的太多了,直接开始做你的项目就可以,按钮不会加?颜色不会改?大小不会调?这时候再书+google
    hustlzp
        20
    hustlzp  
    OP
       2014-06-27 22:00:54 +08:00
    @WildCat 我去,哥们,你这情况我能理解...有机会追过来不...
    hustlzp
        21
    hustlzp  
    OP
       2014-06-27 22:01:43 +08:00
    @refear99 你说得对,我也意识到如此,今天就开始建工程写代码了: https://github.com/hustlzp/xichuangzhu_ios
    tylr
        22
    tylr  
       2014-06-27 22:02:08 +08:00
    @refear99 同意,看一半书,接着开干,Google your way out,做了一两个实际应用后再回去把书看完,我就是这样过来的
    WildCat
        23
    WildCat  
       2014-06-27 22:09:40 +08:00
    @hustlzp 嘿嘿,多年的好盆友,我自己折腾好几年没上学,现在她大三我大一啦。只能祝福她啦=。=
    她男票貌似学电子商务?您呢?
    hustlzp
        24
    hustlzp  
    OP
       2014-06-27 22:21:00 +08:00
    @WildCat 我专业是光电,被这专业坑哭了...毕业转互联网。
    WildCat
        25
    WildCat  
       2014-06-27 22:24:51 +08:00
    @hustlzp 哈哈,GL GG
    heqichang
        26
    heqichang  
       2014-06-27 23:31:54 +08:00
    我从这月也刚开始接触ios开发,最开始拿着的一本 objective-c的基础教程 把oc给大致看了一遍,然后开始看一本matthew knott的 beginning XCode 的书,照着里面的事例开始做ios,开发者账号我从开始学就购买了,也许我比较急着看真实的效果。不过本人比较懒,现在也还没开始做出个啥。。。
    dorentus
        27
    dorentus  
       2014-06-28 01:03:17 +08:00 via iPad
    @hustlzp 那这方案完全 OK。
    icyalala
        28
    icyalala  
       2014-06-28 02:23:27 +08:00
    当你写swift,遇到问题上网查的时候,发现全是objc的资料。。那就呵呵呵。。
    这几年内objc不会被抛弃的,大量的书籍、资料、第三方库仍旧是objc。如果你的目标是尽快实现App功能,那还是集中精力从oc学起吧。尽快实践和上手项目,需要什么的时候再去翻文档,这样会比较节省时间。

    未来这几年oc和swift会并行前进,所以这段时间的从业者就需要掌握两门语言,不然别人写的东西看不懂会很麻烦。。
    icyalala
        29
    icyalala  
       2014-06-28 02:26:55 +08:00
    另外,关于数据那块儿,既然都决定用sqlite了,那就没必要用CoreData了。
    https://github.com/ccgus/fmdb 用这个访问sqlite会省事很多。
    blacktulip
        30
    blacktulip  
       2014-06-28 03:04:45 +08:00
    @icyalala 我倒是有不同意见。首先,就以 iOS 开发者和教学者的基数来看,书籍资料,网络资源都是不用愁的,时间自然要等,但是肯定不会是几年,也就是一年,顶天两年的事情。我认为近几个月就会有一大批资料出来;其次,第三方 ObjC 库是能直接用的,学个调用不难吧,这完全不是问题;第三,您可能低估了大家伙儿对 ObjC 的不满情绪,都被折腾多久了,现在好不容易能解脱,我看大家迁移的速度会非常快的。
    dorentus
        31
    dorentus  
       2014-06-28 03:34:40 +08:00 via iPhone
    Swift 现在资料不多只是因为 1)本身还不是正式版,开发工具也还不稳定 2)iOS 8 beta SDK 还受 NDA 限制…
    artwalk
        32
    artwalk  
       2014-06-28 08:01:16 +08:00
    BNR 一天十几个番茄,5天就可刷完
    hustlzp
        33
    hustlzp  
    OP
       2014-06-28 08:30:32 +08:00
    @artwalk 还从没试过番茄工作法~
    allenforrest
        34
    allenforrest  
       2014-06-28 12:07:01 +08:00
    follow 楼主,刚在 amazon 入了 kindle 版本的 iOS BNR,开始苦读。
    WildCat
        35
    WildCat  
       2014-06-28 13:24:41 +08:00
    @allenforrest Amazon中国区貌似买不到啊,求入手方法
    wezzard
        36
    wezzard  
       2014-06-28 13:30:22 +08:00   ❤️ 1
    建議先買iOS開發者項目,因爲可以真機聯調,真機和模擬器的感覺是不同的,而且iOS7以後Core Animation的實現在模擬器和真機上不一樣,本來模擬器就無法真實反映程序在真機上的圖形性能,iOS 7以後更加了。
    另外模型層建議使用CoreData,iOS 8的Core Data增強了許多。利用iOS8新增的API,以前20000條數據更新在Mac上做要9秒,現在只需要0.7秒。使用Core Data能夠利用iCloud,但是SQLite的話你要自己解決雲端更新的問題。如果你想9月之前就用到iOS 8的新API,那麼入手iOS開發者項目就更理所當然了。
    allenforrest
        37
    allenforrest  
       2014-06-28 14:20:51 +08:00   ❤️ 1
    @WildCat Amazon 中国区有 NNR 的中文版本实体书(无 kindle 版),但是是第三版,最新的第四版只有美区才有实体书和 kindle 版。

    你注册个 Amazon 美区帐号就能买了啊,支付可以用信用卡或 paypal。

    买好以后,kindle 登录美区帐号就能看到推送下来的书。
    WildCat
        38
    WildCat  
       2014-06-28 14:55:23 +08:00 via iPhone
    @allenforrest 美区Amazon账号登录后是否会冲掉中国区的书?另外能否透露下这本书kindle版的价格?
    hustlzp
        39
    hustlzp  
    OP
       2014-06-28 15:52:39 +08:00
    @wezzard 感谢,原来iOS8的改进如此之大。我会在下个星期把开发者账号买下。
    allenforrest
        40
    allenforrest  
       2014-06-28 16:59:32 +08:00 via iPhone   ❤️ 1
    @WildCat 对,切换账号会冲掉已经下载的书,但云端的不受影响哈,下次再切回来重新下载就好。价格是22.9刀
    railgun
        41
    railgun  
       2014-06-30 11:32:27 +08:00
    多看苹果的文档
    kobe1941
        42
    kobe1941  
       2014-07-08 16:15:18 +08:00
    @qq2511296 我买了这本书,真想退给关东升,他的确懂ios,但是不懂市场定位.这本书对于新手来说太难,对于已经入门的人来说太浅,书涵盖的内容多但是都是随便讲讲而已,而且大量用到了xib和StoryBoard.一本鸡肋书,还定价死贵死贵.
    hustlzp
        43
    hustlzp  
    OP
       2014-07-08 16:18:40 +08:00
    @kobe1941 是的,坑死...
    hanangellove
        44
    hanangellove  
       2014-09-04 17:48:28 +08:00   ❤️ 1
    IOS开发指南,我觉得那本书不咋地,更像是把网上的东西copy一下装订成书!!!!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5614 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 01:34 · PVG 09:34 · LAX 17:34 · JFK 20:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.