OC中提供了@property的关键字来声明变量,来简化开发人员手写getters和setters,同时不破坏面向对象的封装性,这样的好处是在一个有很多属性的Model类里,无需再为每一个属性写一套getters和setters,让代码更简洁。下面看代码的示例。
//
// Goods.h
// 07_Property
//
// Created by apple on 14-11-12.
// Copyright (c) 2014年 cc. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Goods : NSObject {
int price2;
}
// OC中提供了 @property关键字来声明变量
// 1. @property声明的变量可以直接生成public的getters和setters方法,无需自己实现了
// 2. @property声明的变量是private类型的
// 3. @property声明的变量名默认是“标准变量名”, 即变量前面加上_, 这里生成的就是 _price, 通过description()可以验证
// 4. @property声明的变量可以关联一个成员变量 @property int price = price2, 生成的getters和setters就是price2这个成员变量的了
// 5. @property声明的变量无需写在 {}中了
@property int price;
- (NSString *)description;
@end
//
// Goods.m
// 07_Property
//
// Created by apple on 14-11-12.
// Copyright (c) 2014年 cc. All rights reserved.
//
#import "Goods.h"
@implementation Goods
- (NSString *)description {
return [NSString stringWithFormat:@"price=%d", _price];
}
@end
//
// main.m
// 07_Property
//
// Created by apple on 14-11-12.
// Copyright (c) 2014年 cc. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Goods.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Goods* pGoods = [[Goods alloc]init];
//使用自动生成的setPrice
[pGoods setPrice:10];
NSLog(@"%@", pGoods);
}
return 0;
}
测试输出的结果如下: