黑马程序员技术交流社区

标题: 有关oc中自定义构造方法和便捷构造器的简单演示 [打印本页]

作者: FireFrog    时间: 2016-2-21 23:29
标题: 有关oc中自定义构造方法和便捷构造器的简单演示
大家好,相信大家学习了构造方法之后对于自定义构造方法应该不陌生,那么小生就献个丑.写一个自定义的构造方法 ,
//首先我们创建一个继承自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去实践
还希望有实践的哥们回个帖 再次谢谢大家




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2