黑马程序员_OC分类和构造方法

本文详细介绍了Objective-C中的构造方法,包括其含义、创建过程、重写init方法的目的和注意事项,并通过代码实例展示了自定义构造方法的实现。此外,还探讨了分类的概念,说明了分类在不修改原有类代码的情况下为类添加方法的用法,以及分类的使用注意事项和优势。
摘要由CSDN通过智能技术生成

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

  1. 构造方法
    1).含义:用来初始化对象的方法,就是构造方法。构造方法是对象方法,以“-”号开头。
    2).创建对象的过程:
    a.分配存储空间,使用NSObject的alloc方法实现,只是返回了存储空间。如下实例:
    [objc]  view plain copy print ?
    1. Person *p1 = [Person alloc];  

    b.初始化,使用NSObject的init方法对对象进行初始化。如下实例:
    [objc]  view plain copy print ?
    1. Person *p2 = [p1 init];  

    c. 也可以直接使用如下代码:
    [objc]  view plain copy print ?
    1. Person *p3 = [[Person alloc] init];  
    2. //整个过程其实就是Person *p = [Person new]  
    d.构造的关键是重写init方法。

    3).重写init方法
    a. 作用:当创建对象时,返回一个特定初始化的值,而不是默认初始化的0.
    b. 代码实例:
    [objc]  view plain copy print ?
    1. - (id)init  
    2. {  
    3.     if(self = [super init])  
    4.     {  
    5.         _age = 10;   
    6.     }  
    7. }  

    4).重写构造方法的目的:为了让对象创建出来,成员变量就有一些固定的值。
    5).构造方法的注意点:
    a. 先调用父类的构造方法([super init]);
    b. 再进行子类内部成员变量的初始化。
    6).构造方法的运行原理:


    7).自定义构造方法:
    a. 作用:创建对象时传入参数对成员变量进行赋值;
    b. 方法声明:@property int age;
    c. 方法实现:
    [objc]  view plain copy print ?
    1. -(id)intWithAge:(int)age  
    2. {  
    3.     if(self = [super init])  
    4.     {  
    5.         _age = 10;   
    6.     }  
    7. }  
    d. 自定义结构规范:

    1>一定是对象方法,一定以"-"开头;

            2>返回值一般是id类型;

            3>方法名一般以initWith开头;

             4>父类的属性交给父类的方法去处理,子类方法处理子类自己的属性。

  2. 分类(Category)
    1).使用场景:给某一个类扩充一些方法(不修改原来类的代码)。

    2).分类方法:

            a. 声明:@interface 类名(分类名称) @end

            b. 实现:@implementation类名(分类名称) @end
    3).分类的作用:在不改变原来内容的基础上,可以为类增加一些方法。

    4).使用注意:

            1>只能增加方法,不能增加成员变量;

            2>分类实现总可以访问原来类中声明的成员变量;

            3>分类可以重新实现原来类中得方法,但是会覆盖掉原来的方法,会导致原来的方法失效;

             4>分类的优先级最高(最后参与编译的文件优先级最高),其次是原来的类,再次是父类。

    5).好处:分模块开发;给系统自带的类添加分类。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值