原先我们都用以下代码来构建一个实例:
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;
}