UDN-企业互联网技术人气社区

板块导航

浏览  : 6287
回复  : 17

[iOS] 如何才能从基础开始系统的掌握iOS开发?

[复制链接]
楼台的头像 楼主
发表于 2015-5-25 14:49:58 | 显示全部楼层 |阅读模式

iOS开发,swiftly

iOS开发,swiftly



本人大四学生,用iOS设备两年多了,真正的接触开发有半年时间吧,之前Java基础还行。现在感觉有点小瓶颈,很多东西仅仅限于会用或者按照规范依葫芦画瓢,但不知道深层次的原理以及为什么这样做,感觉知识学习不够系统,经常遇到一些NS类不知所以,翻查Apple的docs有时也看不太懂(可能有外语水平问题,但应该不是主要原因),比如NSApplication、NSOperation、NSRunLoop等。哪位前辈能指点一下进一步的学习方法?

相关帖子

发表于 2015-5-25 14:50:32 | 显示全部楼层
我当时刚学iOS开发的时候一样的感觉 总想知道原理 内部怎么回事 感觉在像在雾里
但是iOS开发就是这样 他是封闭的 本身就是在雾里...

关于iOS开发的学习 打个比方就像把汽车分解
  • 最底层的原料有塑料 钢铁
  • 再用这些底层的东西造出来发动机 座椅
  • 最后再加上写螺丝 胶水等 把汽车就拼起来了
iOS基本都是英文的资料 也由于封闭 文档写的相当好

在遇到新框架的时候
  • 弄明白框架的功能
  • 去文档里搜搜 框架的 Programming Guide 很有用
  • 要弄明白框架类的继承结构
写iOS的程序不一定都是用OBJC 很多框架是用C写的


学习iOS开发基础可以按照下面两个方面学
  • 基础 (原料 钢铁 塑料)
  • OBJ-C --- 语法弄明白 @interface @property 这些东西总要知道是干嘛的 怎么用
  • 基础库 --- NSString NSArray NSDictionary等 这些东西在所有的框架里都会出现
    • iOS大部分类都是继承自NSObject (我还没见过不是继承自NSObject的..)
    • 还有一些 像NSCopying的接口(经@李禹龙提醒 应该叫协议) 不是特别用到开始不用了解
    • NSObject 创建对象的时候用 + (id)alloc 方法 创建后需要init方法初始化 这个init指的是所有前面是init的方法比如UIView的初始化方法是 - (id)initWithFrame:(CGRect)aRect 在Objc里有很多这样关于函数命名的约定 类似于在python中的函数__xxx
    • NSString 字符串 NSArray 数组 NSDictionary 字典 这些都需要弄很清楚 其他的类都是一个套路
    • NSMutableArray 这样带Mutable的类代表可变的 继承自相应的不可变类 比如NSMutableArray继承自NSArray 他们都添加了可以改变对象内容的方法比如
      • - (void)addObject:(id)anObject 添加对象
      • - (void)removeObject:(id)anObject 删除对象
    • 上面只是一个大概的总结 还有很多东西需要学 iOS5的SDK已经支持ARC 可以自动进行release 但是对iOS4的支持还有一个小问题 现在要开发应用 可能还需要按照之前的MRC的方式alloc release retain autorelease 之类的内存管理方法 不过如果你现在开始学 到编出像样的APP iOS5可能已经普及了 可以直接用ARC (另 之前对ARC的了解很粗浅 现在开发程序完全可以直接ARC iOS4不支持的weak是有办法替代的 用unsafe_unretained 如果同时支持iOS5和iOS4 用宏判断下就可以 当然也可以直接用assign)
    • 还有一点开始学习的时候肯定很疑惑 内存管理是基于函数名称的 比如带alloc copy的函数 用了之后返回的对象一定要release 这个不用疑惑 照做就行了

点评 ( 1 ) 收起 / 展开点评

benbenxiong 2015年05月25日 22:43

很赞!

使用道具 举报

回复

发表于 2015-5-25 14:52:57 | 显示全部楼层
终于碰到一个自己能答好的问题了,楼主和我当年的情况相似,但不一样,我是工作一段时间后发现自己的储配不够了。我不知道的楼主的楼主的情况,我说说你听听,绝对干货!
首先,基础很重要,其实就是学校的课程。数据结构和算法,设计模式,编译原理,操作系统原理,再掌握一门语言比如c/c++,你会发现很多底层的类库都是C写的。而且可以混编,特别是一些第三方的类库直接就是C++写的。其他的包括T-Sql,html,js等你也可以了解下,因为基于hyper link方式的开发也在发展。

然后,你就要看看iOS开发的武器库了。入门的话可以看看基本数,很好理解也很实用。

1.Beginning.iOS.5.Development.Exploring.the.iOS.SDK.Dec.2011
2.Learn_Objective-C_for_Java_Developers/ Objective-C编程之道
3.iOS 7 Programming Cookbook

这三本看下来你可以做一些下项目了,但是这是远远不够的,可能你知道但是用的时候就知道有些细节或者背后的机制没有了解清楚,这个时候就要看文档了。我不得不得不感慨,苹果的文档写的太好了。我之前的列表,楼主可以参考一下

一.预览篇
1.Start Developing iOS Apps Today
Start Developing iOS Apps Today: iOS Technologies
#//apple_ref/doc/uid/TP40011343-CH11-SW1

2.iOS 2 Design Resources
Designing Great Apps.
①.iOS 7 UI Transtion Guide
②.iOS Human Interface GuideIines
③.UIKit User Interface Catelog


二.基础篇
1.Objective-C Runtime Programming Guide
Objective-C Runtime Programming Guide: Introduction
Introduction/Introduction.html#//apple_ref/doc/uid/TP40008048

2.Programming With Objective-C
Programming with Objective-C: About Objective-C
Introduction/Introduction.html#//apple_ref/doc/uid/TP40011210

3.iOS Technology Overview
iOS Technology Overview: About the iOS Technologies
Introduction/Introduction.html#//apple_ref/doc/uid/TP40007898-CH1-SW1

4.View Programming Guide for iOS
View Programming Guide for iOS: View and Window Architecture
WindowsandViews/WindowsandViews.html#//apple_ref/doc/uid/TP40009503-CH2-SW1

5.View Controller Programming Guide for iOS
View Controller Programming Guide for iOS: About View Controllers
Introduction.html#//apple_ref/doc/uid/TP40007457

6.Scroll View Programming Guide for iOS
Scroll View Programming Guide for iOS: About Scroll View Programming
Introduction/Introduction.html#//apple_ref/doc/uid/TP40008179

7.Table View Programming Guide for iOS
Table View Programming Guide for iOS: Managing Selections
/ManageSelections/ManageSelections.html#//apple_ref/doc/uid/TP40007451-CH9-SW10

补充:Coding Guidinglines for Cocoa
Coding Guidelines for Cocoa: Introduction to Coding Guidelines for Cocoa
CodingGuidelines.html#//apple_ref/doc/uid/10000146i

三.技术篇
1.Auto Layout Guide
Auto Layout Guide: Introduction
Introduction/Introduction.html#//apple_ref/doc/uid/TP40010853

2.Advanced Memory management Programming Guide
Advanced Memory Management Programming Guide: About Memory Management
MemoryMgmt.html#//apple_ref/doc/uid/10000011i

3.Transitioning to ARC Rellease Notes
https://developer.apple.com/library/ios/releasenotes/ObjectiveC/RNTransitioningToARC/
Introduction/Introduction.html#//apple_ref/doc/uid/TP40011226

4.Threading Programming Guide
Threading Programming Guide: About Threaded Programming
AboutThreads.html#//apple_ref/doc/uid/10000057i-CH6-SW2

5.Networking Programming Topic
Networking Programming Topics: Introduction
Introduction/Introduction.html#//apple_ref/doc/uid/TP40012488

6.Core Data Programming Guide
Core Data Programming Guide: Managed Object Models
#//apple_ref/doc/uid/TP40002328-SW1

7.Core Data Model Versioning And Data Migration
Core Data Model Versioning and Data Migration Programming Guide: Core Data Model Versioning and Data Migration

8.Core Image Programming Guid
Core Image Programming Guide: About Core Image

9.Core Animation Propramming Guid
Core Animation Programming Guide: Core Animation Basics
//apple_ref/doc/uid/TP40004514-CH2-SW3

补充:Concurrency Programming Guide
Concurrency Programming Guide: Concurrency and Application Design
/ConcurrencyandApplicationDesign/ConcurrencyandApplicationDesign.html#//apple_ref/doc/uid
/TP40008091-CH100-SW1

iTunes Connection Developer Guild
https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/About.html#//apple_ref/doc/uid/TP40011225-CH1-SW1

这些不是说一下子看过,根据工作的情况。看完这些的话你会有一个质的飞跃。这些基本上涵盖你开发当中常用的方面。遇到问题可以到CocoaChina,StackOverflow等问答网站去问,还有就是看每年的WWDC的视频,算是对文档的补充。

最后,通过实际的项目综合提高自己,不做项目谈技术都是耍流氓,具体有几个方面。关注高手写的博客,文章质量都很高,非常有助于提高。还有就是研究开源的类库,比如AFNetworking,SDWebImage等,会综合提高你的编程技巧。再加上不断的实践,不断提高。然后过搞搞Git,常去GitHub看看,你会发现很多的好的东西。
推荐几个自己经常去的一些博客和网站
唐巧的技术博客
objc中国
Ray Wenderlich
CocoaDocs.org
NSHipster
Luke's Homepage
Cocoabit | 做自己喜欢的事情

当然,以上知道技术上的东西。你最好还要知道点设计,懂点用户,知道点市场就更好了。希望能帮到你!

使用道具 举报

回复

发表于 2015-5-25 14:53:33 | 显示全部楼层
本帖最后由 一脸美人痣 于 2015-5-25 14:54 编辑

第一步,学习开发语言Objective-C。参考书看《Objective-C基础教程》这本书就行了。书看到后来还需要补充一些关于面向对象的知识,一般计算机专业的学生都是在学C++的时候接触这类思想的。我推荐的那本参考书里也会有一些讲解,进阶的学习需要以后再去看资料,没有特定教材,因为面向对象是一种编程思想,好在Objective-C本身就是这种思想的体现,以后写代码的时候可以慢慢体会。学完《Objective-C基础教程》,就会对iOS开发中所用到的基础数据类有一个了解了,这时候应该就可以写简单的无界面程序了。

第二步,学习iOS开发的软件运行原理,软件开发思想、规范以及一些苹果公司提供的常用标准UI(User Interface,用户界面)控件的使用方法。这个阶段推荐的参考书是《iPhone 4与iPad开发基础教程》,该书有中文译本,虽然不是最新的iOS教程(最新的教程应该是iOS7开发基础教程,但是该书没有中文译本,如果英文过硬,看这本书当然最好)。

第三步,熟悉常用第三方控件。因为苹果本身开放性的局限,其提供的标准开发库会有一些功能局限,智慧无线的网友们开发了各种各样的第三方控件来实现他们想要的功能,可以使开发过程事半功倍。此部分为进阶学习内容,需要在掌握前两步内容的基础上展开。这一步主要是试用,学习第三方代码,要求阅读第三方开发文档以及代码多一些。可以与开发同时进行,边学变进行软件开发。

除了参考书,这里推荐一个网站“Cocoachina苹果开发中文站”里面分享了很多网友的代码,并且可以对自己学习过程中遇到的问题进行讨论。学习初期,中期以及后期进阶都可以在这个论坛找到相应的学习资料与代码,并且可以通过发帖得到大神的技术指点。对应的英文网站是Stackflow,此网站偏重实际开发问题的解决,交流语言为英文。

另外,斯坦福大学每年都开设iOS开发的公开课,从Objective-C的学习到最后的控件使用以及开发思想,架构的学习,都有涉猎,是很好的视频教程。

网易公开课中有以往课程配中文字幕的视频,而最新的课程一般没有中文字幕,并且,该课程选择默认学生已经有C++编程基础,可能对于初学者会困难一些。视频属于公开资源,在搜索引擎上搜索斯坦福、iOS等关键字,即可找到相应资源。刚刚简单搜索了一下,优酷已经提供iOS7开发的高清视频专辑。最后,无论学习哪个操作系统的软件开发,最关键还是要多多练习,因此大量的写练习代码,看别人的优秀代码很重要。





使用道具 举报

回复

发表于 2015-5-25 14:55:10 | 显示全部楼层
我的建议。要想成为高手,必须要了解根。至于sdk怎么用,那是了解了根之后顺便看看写几个项目就能熟悉的。找几本书即可。
iOS开发的根就是obj-c和C/C++。obj-c脱胎于c+面向对象+smalltalk。这三点掌握好了,就成功了一大半。
c部分大家都不错,程序的逻辑。

面向对象通过其他的语言也可以学,obj-c的面向对象比较简单,初学者找几本书看看即可,已经熟悉的再看看设计模式在obj-c的应用也行。

smalltalk部分可能是大家都忽略的。smalltalk的核心是消息。因此obj-c的特点就是和消息相关,消息转发,KVO编程,NSNotification都是这种特色的具体体现。

推荐2本书,一本是法国人写的C++和obj-c,主要将两者的区别。一本是美国人写的Pro iOS Apps performance optimization,讲优化,里边有很多数据结构和算法的具体应用。
使用道具 举报

回复

发表于 2015-5-25 14:55:36 | 显示全部楼层
好多技术都更新了,建议ios4开始入行的同事们多多补补新的技术,2月份苹果不再允许xcode5之外版本开发的程序上架,至于之前那些看见xib 卡年storyboard的人,刚到不屑的人,希望你们尽快的去补补知识吧,ios新出了好多的方法,还有那些一直顽固执着于mrc的老程序员们,赶快arc吧,经常看国外的源代码他们都用的是arc,中国人一直都是守旧思想,之前面试被mrc鄙视的,等官方完全停用mrc的时候,我还想鄙视鄙视那些人。
使用道具 举报

回复

发表于 2015-5-25 15:00:42 | 显示全部楼层
首先建议阅读 Start Developing iOS Apps Today,你可以对 iOS 开发有个总体的认识。文章也有官方的中文版。
编程语言 :

Programming with Objective-C: About Objective-C 这是 Apple 撰写的一份关于 Objective-C 2.0 的一份文档,这也算是学习 iOS/Mac 开发必读的一份文档,记得我当初看的时候是叫做 The Objective-C Programming Language。

Learn Objective-C 这也是广受推荐的一份文档,短小精练,适合入门。

Programming in Objective-C 2.0 原书已经出到第四版了,建议阅读原版,中文版是根据第二版翻译的。此书比较适合入门,它甚至涵盖了 C 语言一些知识。而不像《Objective-C基础教程》直接就进入 Objective-C 及面向对象的一些思想。

iOS 开发:
iOS Developer Library,官方的文档库,也是最靠谱的资料了,在 Xcode 中也可以下载后直接查阅。
Beginning iOS 6 Development: Exploring the iOS SDK 这个书算是用得比较多的一本了,当初我也是看着这本边学边做。且作者也比较勤快,基本跟随 iOS 更新的步伐,每年修订。当时我看的是 iOS 5 的版本,也建议任何学习资料要看要 iOS 5 以后版本的,因为其引入了 ARC,在内存管理方面和以前的方式有很大的不同。
iOS Programming: The Big Nerd Ranch Guide ,比起上面那本这本涉及的面会稍微广些,建议辅助用。


—————————————我是有爱的分割线—————————————————————

建议:
一定要多动手,虽然书籍都有附带源码,但是还是要自己写,即使是照着代码敲也是必要,因为这样更贴近实际你写代码的情况,遇到的问题也绝对不是复制粘贴能带来的。

前期照着书本做的时候一定要迅速,不要一周才完成书上一章的内容,毕竟起步那些内容也比较简单,要不然缓慢的步伐很容易消磨人的兴致。

不要畏惧英文,比起其他开发,iOS 的开发的主要的且质量比较高的资料都来自英文。

使用道具 举报

回复

发表于 2015-5-25 15:01:12 | 显示全部楼层
其实 最好的是自己多实践 实在不理解的 貌似单步调试也是很有用的
开始的时候 iOS开发的很多理念 从其他语言转过来的人 会有很不习惯的感觉
program guide其实相当不错的 还可以搜索一下sample code,然后stackoverflow一下 应该学的会比较快了
使用道具 举报

回复

发表于 2015-5-25 15:03:46 | 显示全部楼层
不建议一上来就看源代码和底层。先学oc,推荐《Learn Objective-C on the Mac》。再学UIKit,推荐《Beginning iOS 5 Development: Exploring the iOS SDK》。iTunes U中斯坦福大学的公开课很适合初学者。另外,苹果的开发者网站可以看10、11年的WWDC视频,这个强烈推荐!!!
使用道具 举报

回复

发表于 2015-5-25 15:04:55 | 显示全部楼层
学习高级语言不要想着能过多的了解到底层的东西,如果对底层特别感兴趣的,建议好好学习下c。如果是从java转过来学o-c的话,应该在学习java的时候就要习惯这种高度封装的东西,现在市面上关于o-c和ios的书并不多,找一两本经典的反复读,慢慢的就能理解了
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部