大家好,相信大家学习了构造方法之后对于自定义构造方法应该不陌生,那么小生就献个丑.写一个自定义的构造方法 ,
//首先我们创建一个继承自NSObject类的Person类在Person类中声明如下
#import <Foundation/Foundation.h>
@interface Person : NSObject
@peoperty NSString *name;
-(instancetype)initWithName:(NSString *)name;
@end
//在实现文件中代码如下
#import <Foundation/Foundation.h>
@implemention Person
-(instancetype)initWithName:(NSString *)name{
if([super init]){
_name=name;
}
return self;
}
@end
以上的就是自定义的构造方法
在主函数里面调用的话应该是这样:
Person *per=[[Person alloc]initWithName:@"黑马小将"];
在上面的创建一个per对象的时候我们先调用了alloc的方法在内存中开辟了一块空间 然后调用init方法初始化. 这样就省去了创建对象的时候需要另外给name赋值的步骤,一步完成, 这样方便不少.但是在调用自定义构造方法的时候还是有些麻烦,因为我们使用级联调用的方式.
为了方便调用 我们可以继续运用封装的思想 将[[Person alloc]initWithName:@"黑马小将"]继续封装
接下来就给大家介绍便捷构造器.
便捷构造器就是封装了alloc 和initWithName:的方法 下面我只写实现文件里的代码
#import <Foundation/Foundation.h>
@implemention Person
//首先这是类方法
+(instancetype)initWithName:(NSString *)name{
//其次因为要调用init方法,而init方法是对象方法 所以要先创建一个对象
Person *per=[[Person alloc]init];
//将参数的name赋值给per.name
per.name=name;
//记住这里一定要返回这个对象per
return per;
}
@end
写到这里就大功告成了!
希望大家多多指教.并没有在真机上敲代码,纯手写,一切格式都是按OC得格式写的 标点也是英文标点 便于大家直接copy去实践
还希望有实践的哥们回个帖 再次谢谢大家 |
|