在面向对象的语言中,Objective-C的 便利初始化函数 可以理解为 如 Java,C++ 中的含参数的构造函数,但又有些不同...
例如,用Student类为例
首先是Student.h文件
#import <Foundation/Foundation.h>
@interface Student : NSObject
//定义属性
@property NSString *studentName; //学生姓名
@property int age; //学生年龄
//含姓名参数和年龄参数的构造函数(便利构造初始化函数)
-(id) initWithName:(NSString *)name andWithAge:(int)age;
//便利构造器(是类方法)
+(id) initWithName:(NSString *)name andWithAge:(int)age;
@end
然后是管理实现的Student.m文件
#import "Student.h"
@implementation Student
//含姓名参数和年龄参数的构造函数(便利构造初始化函数)
-(id) initWithName:(NSString *)name andWithAge:(int)age
{
if (self = [super init])
{
[self setStudentName:name];
[self setAge:age];
}
return self;
}
//便利构造器(是类方法)
+(id) initWithName:(NSString *)name andWithAge:(int)age
{
Student *student = [[Student alloc] initWithName:name andWithAge:age];
return student;
}
@end
在main.m里面查看用法
#import <Foundation/Foundation.h>
#import "Student.h"
int main(int argc, const char * argv[]) {
//之前的定义方法
Student *student = [[Student alloc]initWithName:@"小明" andWithAge:19];
//用便利构造器,用便利构造器可以看出来,定义要简单的多
Student *student1 = [Student initWithName:@"小明" andWithAge:19];
return 0;
}