0%

Objective-C 类的初始化(构造函数)

原先我们都用以下代码来构建一个实例:

ClassA * a=[[ClassA alloc] init];

在Java中,这就相当于一个无参数的构造方法,如果接下来需要给实例变量赋值,我们可以直接写个带参数的构造方法. ClassA:

#import 

@interface ClassA : NSObject
{
    int num;
}
@property int num;
//自动封装属性
-(ClassA *)initWithNum:(int)n;
-(void)printNum;

@end

@implementation ClassA
@synthesize num;
-(ClassA *)initWithNum:(int)n
{
    self=[super init];
    //执行继承自父类的init
    [self setNum:n];
    //使用封装属性后自动生成的setNum方法,赋值
    return self;
}
-(void)printNum
{
    NSLog(@"%d",num);
}
@end

main.m

#import 
#import "ClassA.h"
//导入头文件

int main (int argc, const char * argv[])
{
    
    @autoreleasepool {
        ClassA * a=[[ClassA alloc] initWithNum:20];
        //调用initWithNum,传入参数        
        [a printNum];
        
    }
    return 0;
}