黑马程序员_OC构造方法

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

构造方法:用来初始化对象的方法,是个对象方法,以’-‘开头,默认的构造方法,也就是init方法,它是不接收任何参数的。

一、重写构造方法:为了让对象创建出来,成员变量就会有一些固定的值,一般都会重写构造方法。

代码示例:

Person类:

#import <Foundation/Foundation.h>

@interface Person : NSObject
@property int age;

@end

@implementation Person

- (id)init
{
    if ( self = [super init] )
    { 
        _age = 10;
    }

    return self;
}

@end
完整创建一个Person对象:

Person *p = [[p alloc] init];
 
NSLog(@"age is %i", p.age);

[p release];
1.调用+alloc分配存储空间;

2.调用-init进行初始化;

3.每个Person对象创建出来,他的_age都是10;
重写构造方法的注意点

1.先调用父类的构造方法([super init])来初始化父类中声明的一些成员变量和其他属性;
2.如果对象初始化成功,再进行子类内部成员变量的初始化;

3.最后返回一个已经初始化完毕的对象;

二、自定义构造方法:默认的构造方法,也就是init方法,它是不接收任何参数的。因此,在实际开发中,为了方便,会经常自定义构造方法。构造方法的方法名一般都会以init开头,返回值跟init方法一样为id类型,id可以代表任何OC对象。

接下来,自定义一个构造方法,可以传入一个age参数来初始化Person对象

Person类(自定义构造方法):

#import <Foundation/Foundation.h>

@interface Person : NSObject
@property int age;

@end

@implementation Person

- (id)init
{
    if ( self = [super init] )
    { 
        _age = 10;
    }

    return self;
}

- (id)initWithAge:(int)age 
{
    if ( self = [super init] ) 
    {
        _age = age;
    }
    return self;
}

@end
调用自定义构造方法:

Person *p = [[p alloc] initWithAge:20];
 
NSLog(@"age is %i", p.age);

[p release];

在第1行调用了构造方法initWithAge:,并传入20作为参数,因此Person对象的成员变量_age会变为20;


---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值