一、开发之前需要先熟悉下以下内容(个人建议)。
1、Objective-c(oc)是扩充C的面向对象编程语言,oc 具有动态语言的特性可以在程序运行是修改方法、熟悉等 并且完全兼容C语言。具体的基础介绍 :传送门
2、OC的垃圾回收机制:oc是采用应用计数的方法管理内存的,内存管理方法分为两种 MRC 和 ARC。其中MRC 是手动管理内存从 ARC 是系统自动管理内存,目前版本都已经是ARC 的方式了 传送门。其次还需要了解 assign、retain、strong、copy、weak 这几个关键字的用法。具体的请看传送门。
3、OC 是不支持多继承的语言,但是OC提供一种方式间接的实现了多继承:协议(procotol) 实现协议的就可以看做是 委托。OC 的协议跟java语言的接口(interface)比较类似。
4、OC 的特性 Category(类别) 和 Extension(扩展),OC 通过Category 实现了 减小类的体积、很方便的给任何类(系统更自定义)增加自己的方法、多人可以协同修改开发。OC 通过Extension 实现了扩展的类(只能针对自定义的类)的属性、方法等。具体的区别:传送门。
5、APP 的生命周期:传送门。
6、APP 中每个 UIViewController(VC)视图控制器 的生命周期:传送门, iOS app 中的每一个界面的载体几乎都是 VC 通过压栈出栈的方式管理 VC 路径。跟android 中的activity 很像。
7、UINavigationController(导航控制器) 通过这个来管理一个堆栈中的VC 的压栈出栈。我们平时看到APP 每个界面顶部的标题栏 及 返回按钮及 右侧的自定义按钮 都是它来实现控制的。需要了解下:传送门。
8、UITabBarController(底部tabBar控制器) 通过这个来管理底部每个tab 对应的视图,这块 每一个tabBar 可以对应一个UINavigationController 即每个tabBar 都可以有一个堆栈来管理当前tabBar下的VC。传送门
9、UITableView及UICollectionView 的使用。这两个控件是开发中用到比较频繁的控件 相当于android 的listView,传送门 UITableView UICollectionView。
10、多线程 GCD 需要了解 使用起来比较方便 使用blcok 的方式实现的,传送门 。
二、问题解答
1.播放框架介绍
AVPlayer:在iOS开发中,播放视频通常有两种方式,一种是使用MPMoviePlayerController(需要导入MediaPlayer.Framework),还有一种是使用AVPlayer。AVPlay既可以用来播放音频也可以用来播放视频,AVPlay在播放音频方面可以直接用来播放网络上的音频。在使用AVPlay的时候我们需要导入AVFoundation.framework框架,第一种方式已经废弃了 因为功能比较单一,目前主流的都用AVPlayer。
AVFoundation : AVFoundation是一个可以用来使用和创建基于时间的视听媒体的框架,它提供了一个能使用基于时间的视听数据的详细级别的Objective-C接口。
2.framework常用框架
AFNetworking :是一个为 iOS 和 Mac OSX 制作的令人愉快的网络库,它建立在URL 装载系统框架的顶层,内置在Cocoa里,扩展了强有力的高级网络抽象。目前多数app 网络请求都用的是它。数据请求回调都是通过block 回调的主线程的,使用起来非常方便。
JSONModel : 是一个能够快速巧妙的把json 数据转化成数据模型。
SDWebImage : 是一个iOS图片加载框架,它支持从网络中下载且缓存图片,并设置图片到对应的UIImageView控件或者UIButton控件。在项目中使用SDWebImage来管理图片加载相关操作可以极大地提高开发效率,让我们更加专注于业务逻辑实现。
ReactiveCocoa(RAC) : RAC具有函数响应式编程特性,初学者可以暂时不用去看,后面可以去了解。
Realm : 是一款可以用于iOS(同样适用于Swift&Objective-C)和Android的跨平台移动数据库。
3. block,委托,扩展类在实际开发如何使用
block 跟 委托 的使用场景是一样的:处理回调事件,相比之下 block 写的代码更少,看着比较明了跟android 中的匿名函数比较像,委托就是设计模式的一种体现。
扩展类 分为 Category 和 Extension 。Category 主要用在希望为原有的类添加一个比较通用的方法来处理一些比较通用的操作,还有就是可以把同一个类根据功能分类 即看着清楚又减小了本类的体积。Extension 主要用在为原有的类扩展方法 和 属性 这些方法和属性 都是私有的。具体区别可以看上面的文章。