多语言展示
当前在线:1920今日阅读:167今日分享:16

ios开发常用知识点总结

ios开发常用知识点总结
方法/步骤
1

1、oc基本语法1:属性关键字,使用和意义@property()括号里面关键字nonatomic/atomic     前者是线程unsafe,后者是线程     safe   默认是atomic,生成的setter方法会加锁    nonatomic禁止多线程,提高性能assgin/retain/copy/strong/retain   assgin直接赋值,引用计数不增加retain 保留赋值,引用计数加1  只是保留指针copy 拷贝,引用计数加1  在堆上开辟一块内存,只对实现了NSCopying协议有效strong/weak  强引用和弱引用  强引用是一个强指针 如果这个指针不消失,所指向的对象不会消失,反之弱引用就会消失,强引用好比人和人影子 __strong/__weak/__unsafe_unretained用来修饰变量readWrite/readOnlyreadwrite是给提供个成员变量的访问权限,可读可写,默认属性readOnly:只读权限,生成getter方法,并且没有get前缀@class作用  引入头文件,但是不包含该类的信息,只是作声明。可以极大地提高编译效率,防止编译错误#import  包含该类的所有信息,包括实体变量和方法@interface作用是声明一个类,类似于java的接口,在  @ interface声明的变量 只能在该类中访问,property中声明的可以外部调用。import防止重复引用

2

2:isa/self/super作用isa:每一个对象都有一个isa指针,指向元类self:当前调用方法的类super:调用父类的方法

3

3、代理,通知,类目,延展1:代理 某一个类要完成某个功能,但是他不能去完成,他指定一些方法,可以是可选择实现也可以是必须实现的,当他指定一个delegate做的时候,这个deelgate就是一个代理。2:通知,一对多,观察者向消息中心注册该消息,就可以接收到其他对象发送过来的消息。有一个通知中心发出,通过不同的标示来区分,当在某处按照该标示进行监听的时候,可以获取到消息的信息,消息在不需要的时候需要释放。3、类目是类的扩展,可以在已知的类中添加新的方法,但是不能添加变量,类目中的方法优先级高于原始类中的方法,如果原始类中的方法名称和类目中的方法名称相同,那么该方法会被覆盖。注:关联引用,是在运行势态的时候,允许为已经存在的类中添加自定义属性,通常建议添加的属性石static char类型的。4、延展,在类中的添加的私有方法和变量,并且是必须要实现的。

4

4:set/get方法

5

5:kvo/kvc原理和使用KVC:键值编码,使用键而不是属性去访问变量。KVO:键值观察者,提供了一个对象的属性发生改变,可以通知当前对象的机制。

6

6:block是什么,使用要注意的地方block(闭包):闭包是能够读取其他函数内部变量的函数。建立在栈上,默认情况在闭包内变量被copy一份,所以无法改变变量,加上__block可以修改变量GCD和代理:GCD使用block闭包方式代替委托,代码集中简洁,回调在闭包里面完成。在ARC中使用__weak防止block

7

7:深拷贝,浅拷贝深拷贝:深拷贝是对象拷贝,浅拷贝是指针拷贝,比如说,深拷贝一个对象会在堆上重新申请一块内存,两个指针和内容都是相同的。浅拷贝的话就是拷贝该对象的 指针,指向的都是同一块内存。copy和mutablecopy,copy是不可变的,mutablecopy是可变的,所以当使用copy的时候生成的 对象是不可变的,相当于retain,而使用mutablecopy拷贝的对象都是深拷贝。是重新生成的对象,不然就不能改变。

8

8:常见数据类型,可变和不可变类型,自定义对象常见数据类型,int,float,double,long,ios的封装的数据类型,NSInteger,CGFloat等。自定义对象的归档,需要实现NSCoding协议。

9

9:ARC和非ARC内存管理非ARC内存管理:使用alloc,new,copy生成一个对象,当不需要使用该对象的时候有义务释放它,原则是谁拥有,谁释放。引用计数为0的时候,系统会自动调用dealloc释放内存。ARC是ios5.0之后引入的,原理是在编译期间,自动插入retain/copy/release/autorelease。

10

10:封转、继承、多态封装:高度抽象出来,只暴露接口和需要的参数,不需要显示内部实现机制。继承:子类继承父类所有的东西,包括方法,属性。多态:不同的对象响应相同的方法称为多态。

11

11:单例模式单例,保证在整个应用程序中只生成一个唯一的对象,并且很容易让外界所访问,减少了alloc的开销,提高了传递的效率。2、SDK常用api使用1:UITableViewCell重用机制cell的重用机制,通过指定一个identifier区分不同的cell,可以使用已经创建的cell,包括cell上的子视图,当重用cell的时候,会将之前的数据清空,重新赋值,减少cell的内存开销,保证了UITableView的滑动流畅性。2:NSTimer 1、NSTimer并不精确2、NSTimer需要添加到runLoop运行才会执行,但是这个runLoop的线程必须是已经开启。3、NSTimer会对它的tagert进行retain,我们必须对其重复性的使用intvailte停止。3:coreText4:LocationManager5:远程通知/本地通知NSLocalNoition远程推送:APNS(apple provider noticifition sevice)苹果提供的推送服务,原理是,在应用加载的时候注册推送服务,获取apple返回的token,将token发送给指定的服务器,服务器拿 着这个token发送通知给apple,苹果将这个通知推送给指定token的设备。本地通知:先注册本地通知,通过设定一段时间触发这个预先的通知。6:AVAudioPlayer/MPMoviePlayer    AVAudioPlayer:只能播放一个完整音频,不能播放流式播放,所以需要播放网络音频时候需要使用音频队列。AVPlayer:可以播放本地和流音频AudioQueue:音频队列,通过队列分配内存空间,先缓存音频,再使用缓存的音频。7:UIScrollView/UICollectionView/UIPageViewControoller8:下拉/上拉机制9:runtime机制runtime运行时系统,是object-c运行赖以依靠的基础。发送消息为例子,在编译阶段,并不知道方法是否被实现了,而是在运行时候才会执行。10:UIGesturer/UITouch/UserInterface11:UITabBarController/UINavgationBarController

12

12:应用程序生命周期/UIViewController生命周期ViewController程序生命周期:alloc创建分配内存、init初始化数据,可用、loadView视图加载,如果重写必须要创建一个 view。viewDidLoad视图加载完成,可以将一些subViews的添加在这里处理。viewWillAppear视图将要出现,处理一些过渡 动画。viewDidAppear,视图已经出现。viewWillDisApear视图将要消失,viewDidDisApear视图已经消失。 Dealloc释放一些对象,释放空间。应用程序生命周期:DidLoad应用程序加载完成。3、网络层,多线程,数据解析,数据存储,异常处理1:异步网络请求,NSUrlConnection/ASI/AF/MK2:NSOperation和GCD3:json和xml解析,RestKit4:UserDefalut,NSFile,NSArchive,coreData,sqlite4:、UIView动画,core animation动画,使用示例,原理1:UIView基本动画/带block动画2:CAShapLayer动画3:CA映射动画4:贝塞尔曲线/CAKey关键帧动画/CATrans/CABase5、画图,drect,drectPoint,drectImage,常用的画图方式,原理1:drect只调用一次,手动调用setNeedsLayout会自动调用drect,如果view的frame为空,不会调用drect方法,设定view的model可以一直调用drect2:layOutSubViews在frame改变的时候会调用3:可以指定一块区域画点/画图/    指定圆心,半径,幅度,起始点,颜色,阴影,透明度,渐变6:Xcode的使用,内存instrument,debug7、常用的第三方库使用有哪些1:图片加载SDWebImage2:AFNetWorking/ASIHttpRequest/MKNetWorking3:SVProgressHUD4:RestKit5:RNCacheingUrlProtocol6:webViewBridge7:JsonKit8:storybord使用1:指定一个mainController2:suger,指定一个identifier3:使用NSContrant限制4:注意不要多人修改9、git使用1:git环境搭建2:git 初始化3:git 关联远程库4:git  常用命令,add commit  push pull stash reset merge branch log remote ...10、要你自己实现一个框架给别人使用,思路11、实现一个缓存方案12、侧滑的实现思路

推荐信息