属性 & 便利构造器

1. 在.h文件中声明属性

2. 在.m文件属性的实现

3. 在.m文件中的@synthesize 可以省略了

4. 在.h文件中的成员变量声明部分可以省略


属性的三大作用:

1. 声明了成员变量(可见度 : 私有的)

2. 声明了setter 和 getter 方法

3. 实现了setter 和 getter 方法


创建Person类 

Person.h 

属性声明

1. 关键字@property

2. 属性前面没有下划线 _

3. 相当于声明了setter和getter方法

//成员变量
{
        NSString *_name;

}

//属性
@property (nonatomic,retain)NSString *name;

Person.m

属性的实现

1.关键字 @synthesize

2.相当于实现了setter 和 getter 方法

// 关联, 成员变量给属性赋值 (写属性的话可以省略这句话)
@synthesize name = _name;
//setter 和 getter 都是给成员变量赋值!!不能写属性!递归崩溃!
-(void)setName:(NSString *)name
{
   _name = name;
    
}

-(NSString *)name
{
    return _name;
}


main.m

        Person *person1 =[[Person alloc]init];
        
        //消息语法
        [person1 setName:@"Yuno"];
        NSLog(@"%@", [person1 name]);
        
        
        //点语法 (= 左边一般是setter方法 右边一遍是getter方法)
        person1.name = @"Lechter";
        NSLog(@"%@", person1.name);

/* KVC 使用*/

        [person1 setValue:@"BigMonkey" forKey:@"name"];


/* 便利构造器 */


创建Student类

Student .h 

@property(nonatomic, retain)NSString *name;
@property(nonatomic, assign)NSInteger age;
@property(nonatomic, retain)NSString *sex;

//自定义初始化
- (id)initWithName:(NSString *)name
               age:(NSInteger)age
               sex:(NSString *)sex;


/****便利构造器*******/


+ (id)personWithName:(NSString *)name
                 sex:(NSString *)sex
                 age:(NSInteger)age;

Student.m

//自定义初始化
- (id)initWithName:(NSString *)name age:(NSInteger)age sex:(NSString *)sex
{
 
    self = [super init];
    if (self) {
        self.name = name;
        self.age = age;
        self.sex = sex;
    }
    return self;
}



/**便利构造器**/

+ (id)studentWithName:(NSString *)name
                 sex:(NSString *)sex
                 age:(NSInteger)age
{
    Student *stu = [[Student alloc] initWithName:name age:age sex:sex];
    return stu;
}

main.m

        Student *stu = [Student studentWithName:@"Yuno" sex:@"女" age:20];



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值