美文网首页
OC知识点总结(一)

OC知识点总结(一)

作者: 风云悟道 | 来源:发表于2019-03-12 11:45 被阅读0次

    类和对象

    1.面向过程和面向对象的区别

    面向过程:指解决一个问题具体化、流程化,一步一步的来,解决问题注重实现的过程,完整的记录解决问题的全部步骤。

    面向对象:分析解决问题直接参入的对象,模型化,抽出一个类,只需要对外提供一个功能接口,想要什么方法直接调用就好了,不在意内部实现的过程。

    相比两者,一个注重过程,一个注重结果,OC就是面对对象的语言,所以比较C简单一点。

    2.类和对象

    类:具有相同特征和行为的事物的抽象,简单的讲就是物以类聚的类,例如(人类,狗类,猫类、羊类)。

    对象:这个对象不是指女朋友,哈哈,万物皆对象,对象就是某一类的实例,类是对象的类型,例如(喜羊羊是一个羊对象,是羊类中的一个具体实例)。

    定义一个类,Xcode会自动生成一个.h和.m文件,两个文件管理一个类,.h称为接口文件,.m称为实现文件。在接口文件中暴露出去的属性和方法外界都可以访问,@interface  @end 对外声明类的特征和行为。实现文件:@implementation    @end 对内实现行为(内部的具体实现)。

    生成对象,通过类生成一个实例对象的步骤,首先调用alloc 方法,申请一块内存空间,在调init 方法,进行初始化,对象创建完成之后可以使用点语法修改对应的属性。也可以使用new直接生成对象,实质上是执行了alloc 和 init方法。

    类方法和对象方法,类方法方法类型符号(+)只能类使用,对象(实例)方法方法类型标识符(-)只能对象使用。类方法比实例方法效率更高。

    3.面向对象的三大特征

    只要是面向对象的语言都具备这样三个特征,即封装、继承、多态。

    封装:这个特征是编程的最高境界,检验是否是大神的唯一标准,简单来说就是将属性和方法封装在一起,防止出现垃圾的重复代码,给外界提供最简单的接口,满足最多的需求。

    多态:一句话概括即父类指针指向子类对象,调用不同子类的同一方法,会执行不同结果。例如动物类的两个实例分别指向一个狗对象和猫对象,执行同一个eat方法,打印结果:狗吃肉,猫吃鱼。

    继承:OC只支持单继承,C++支持多继承,单继承的意思只有一个父类,上层是父类下层是子类,继承父类所有公有的属性和方法,OC中的根类是NSObject(基类,所有对象的祖先),子类可以重写父类的方法(覆盖)。

    4.初始化方法和构造方法

    init初始化:当我们想创建一个实例对象时就已经具备一些属性,我们可以重写init方法,苹果粑粑官方要求,我们再重写这个方法或者自定义构造方法的时候,必须先调[super init],先初始化父类的一些基本属性,假如父类初始化失败,如果在执行子类的一些操作毫无意义。我们可以自定义初始化方法,加上对应的参数,原则上我们都要以initWith开头,代码规范提高可读性。

    类方法初始化对象:我们可以提供一个简单的类方法,用id或者instancetype类型作为返回值,将对象初始化的操作封装到方法体中,直接返回一个对象。

    id和instancetype区别:两者万能指针,id非常强大,可以用来做变量和返回值类型,但是在编译的时候不能确定其真实的类型,如果调用一个对象单一的方法,编译完全没问题,在运行的过程中可能会崩溃。instancetype只能做返回值类型,不能作为参数类型,所以苹果推荐我们如果是返回值类型最好使用instancetype。

    相关文章

      网友评论

          本文标题:OC知识点总结(一)

          本文链接:https://www.haomeiwen.com/subject/lhhbpqtx.html