ios开发常用知识点总结

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/readOnly

readwrite是给提供个成员变量的访问权限,可读可写,默认属性

readOnly:只读权限,生成getter方法,并且没有get前缀


     @class作用  引入头文件,但是不包含该类的信息,只是作声明。可以极大地提高编译效率,防止编译错误

    #import  包含该类的所有信息,包括实体变量和方法

     @interface作用是声明一个类,类似于java的接口,在  @ interface声明的变量 只能在该类中访问,property中声明的可以外部调用。

import防止重复引用

     

    2:isa/self/super作用

isa:每一个对象都有一个isa指针,指向元类

self:当前调用方法的类

super:调用父类的方法


    3、代理,通知,类目,延展

    1:代理 某一个类要完成某个功能,但是他不能去完成,他指定一些方法,可以是可选择实现也可以是必须实现的,当他指定一个delegate做的时候,这个deelgate就是一个代理。

   2:通知,一对多,观察者向消息中心注册该消息,就可以接收到其他对象发送过来的消息。有一个通知中心发出,通过不同的标示来区分,当在某处按照该标示进行监听的时候,可以获取到消息的信息,消息在不需要的时候需要释放。

   3、类目是类的扩展,可以在已知的类中添加新的方法,但是不能添加变量,类目中的方法优先级高于原始类中的方法,如果原始类中的方法名称和类目中的方法名称相同,那么该方法会被覆盖。

      注:关联引用,是在运行势态的时候,允许为已经存在的类中添加自定义属性,通常建议添加的属性石static char类型的。

  4、延展,在类中的添加的私有方法和变量,并且是必须要实现的。

    4:set/get方法


    5:kvo/kvc原理和使用

   KVC:键值编码,使用键而不是属性去访问变量。

  KVO:键值观察者,提供了一个对象的属性发生改变,可以通知当前对象的机制。

    6:block是什么,使用要注意的地方

    block(闭包):闭包是能够读取其他函数内部变量的函数。建立在栈上,默认情况在闭包内变量被copy一份,所以无法改变变量,加上__block可以修改变量

GCD和代理:GCD使用block闭包方式代替委托,代码集中简洁,回调在闭包里面完成。

在ARC中使用__weak防止block

    7:深拷贝,浅拷贝

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

    8:常见数据类型,可变和不可变类型,自定义对象

     常见数据类型,int,float,double,long,ios的封装的数据类型,NSInteger,CGFloat等。

      自定义对象的归档,需要实现NSCoding协议。

    9:ARC和非ARC内存管理

    非ARC内存管理:使用alloc,new,copy生成一个对象,当不需要使用该对象的时候有义务释放它,原则是谁拥有,谁释放。引用计数为0的时候,系统会自动调用dealloc释放内存。

    ARC是ios5.0之后引入的,原理是在编译期间,自动插入retain/copy/release/autorelease。

    10:封转、继承、多态

     封装:高度抽象出来,只暴露接口和需要的参数,不需要显示内部实现机制。

    继承:子类继承父类所有的东西,包括方法,属性。

    多态:不同的对象响应相同的方法称为多态。

    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:coreText

    4:LocationManager

    5:远程通知/本地通知NSLocalNoition

         远程推送:APNS(apple provider noticifition sevice)苹果提供的推送服务,原理是,在应用加载的时候注册推送服务,获取apple返回的token,将token发送给指定的服务器,服务器拿着这个token发送通知给apple,苹果将这个通知推送给指定token的设备。

        本地通知:先注册本地通知,通过设定一段时间触发这个预先的通知。

    6:AVAudioPlayer/MPMoviePlayer    

          AVAudioPlayer:只能播放一个完整音频,不能播放流式播放,所以需要播放网络音频时候需要使用音频队列。

         AVPlayer:可以播放本地和流音频

         AudioQueue:音频队列,通过队列分配内存空间,先缓存音频,再使用缓存的音频。

   7:UIScrollView/UICollectionView/UIPageViewControoller

    8:下拉/上拉机制

    9:runtime机制

         runtime运行时系统,是object-c运行赖以依靠的基础。发送消息为例子,在编译阶段,并不知道方法是否被实现了,而是在运行时候才会执行。

    10:UIGesturer/UITouch/UserInterface

    11:UITabBarController/UINavgationBarController

    12:应用程序生命周期/UIViewController生命周期

    ViewController程序生命周期:alloc创建分配内存、init初始化数据,可用、loadView视图加载,如果重写必须要创建一个view。viewDidLoad视图加载完成,可以将一些subViews的添加在这里处理。viewWillAppear视图将要出现,处理一些过渡动画。viewDidAppear,视图已经出现。viewWillDisApear视图将要消失,viewDidDisApear视图已经消失。Dealloc释放一些对象,释放空间。

      应用程序生命周期:DidLoad应用程序加载完成。


3、网络层,多线程,数据解析,数据存储,异常处理

    1:异步网络请求,NSUrlConnection/ASI/AF/MK

     2:NSOperation和GCD

     3:json和xml解析,RestKit

     4:UserDefalut,NSFile,NSArchive,coreData,sqlite

     

4:、UIView动画,core animation动画,使用示例,原理

     1:UIView基本动画/带block动画

     2:CAShapLayer动画

     3:CA映射动画

     4:贝塞尔曲线/CAKey关键帧动画/CATrans/CABase

5、画图,drect,drectPoint,drectImage,常用的画图方式,原理

     1:drect只调用一次,手动调用setNeedsLayout会自动调用drect,如果view的frame为空,不会调用drect方法,设定view的model可以一直调用drect

     2:layOutSubViews在frame改变的时候会调用

     3:可以指定一块区域画点/画图/    指定圆心,半径,幅度,起始点,颜色,阴影,透明度,渐变

6:Xcode的使用,内存instrument,debug

7、常用的第三方库使用有哪些

     1:图片加载SDWebImage

     2:AFNetWorking/ASIHttpRequest/MKNetWorking

     3:SVProgressHUD

     4:RestKit

     5:RNCacheingUrlProtocol

     6:webViewBridge

     7:JsonKit


8:storybord使用

    1:指定一个mainController

    2:suger,指定一个identifier

    3:使用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、侧滑的实现思路


杂谈:1、看过的技术书教程

         1:Objective-C 2.0

         2:iOS并发编程

         3:Programming ios5

         4:iphone开发基础教程

         5:WWDC session

         6:python基础教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值