用Student类来说明:
以下是Student.h头文件内容
#import
@interface Student : NSObject
{
//定义属性
NSString *_name;//学生姓名
int _age;//学生年龄
}
//信息展示的方法
-(void)showmessage;
-(void)showmessage1;
//便利初始化函数
-(instancetype)initWithName:(NSString *)name andAge:(int)age;
//便利构造器(类方法)//便利构造器一般命名的开头是类名
+(instancetype)studentWithName:(NSString *)name andAge:(int)age;
@end
然后就是Student.m的实现文件
#import "Student.h"
@implementation Student
//含姓名参数和年龄参数的构造函数(便利构造初始化函数)
- (instancetype)initWithName:(NSString *)name andAge:(int)age
{
self = [super init];
if (self) {
_name=name;
_age=age;
}
return self;
}
//便利构造器(是类方法)
+(instancetype)studentWithName:(NSString *)name andAge:(int)age
{
__autoreleasing Student *student = [[Student alloc] initWithName:name andAge:age];
return student;
}
-(void)showmessage
{
NSLog(@"我的名字是 %@,%d岁。",_name,_age);
}
-(void)showmessage1
{
NSLog(@"我的名字是 %@,%d岁。",_name,_age);
}
@end
接下来是main.m文件
#import
#import "Student.h"
int main(int argc, const char * argv[]) {
//便利历初始化函数
Student *stu=[[Student alloc]initWithName:@"张三" andAge:22];
//便利构造器
Student *stu1=[Student studentWithName:@"李四" andAge:23];
[stu showmessage];
[stu1 showmessage1];
/*
可以看出用便利构造器定义的对象的代码量少了
以前便利构造器的地位很重要,但现在也不是那么重要了
以前用便利构造器方便是因为是手动控制内存的释放,但现在是自动释放
因此便利构造器的地位不是那么的重要了,只需要知道用法即可
*/
return 0;
}