本帖最后由 蜡笔小炎 于 2015-5-27 00:52 编辑
/*********** * 今天对 “对象的属性封装” 进行学习.收获如下: * * 1. 使用 @property 和 @synthesize 来合成存取方法 * * 2. 4个不同级别的访问控制符: * __ * | @public: 公共访问权限,可以在任意地方被访问 * | * | @private: 彻底隐藏成员变量,这个属性只能在当前类的内部被访问 (实现部分定义属性默认 @private) * < * | @protected: 子类访问权限,属性可以被继承到子类 (接口部分定义属性默认 @protected) * | * |__ @package: 映像访问权限,可以在当前类实现的同一映像被访问 (同一映像:编译后生成的同一框架或同一执行文件) * * * 3. 在使用@property定义属性时,还可以在@property和类型之间用括号添加一些指示符: * __ * | assign: 只对属性简单赋值,不更改引用计数。主要适用于基础类型 * | * | atomic/nonatomic: 限制是否为原子操作(线程安全),aromic是默认值,但多数情况考虑使用nonatomic来提高访问性能。 * | * | copy: 调用setter时,会将copy出来的副本对象赋值给成员变量。(会将原成员变量所引用的对象引用计数减1) * < * | getter/setter: 定义setter和getter的方法名。(setter名要带冒号,如:“setter=abc:” ) * | * | readonly/readwrite: readwrite为默认值,readonly指示系统只合成getter方法。 * | * |__ retain: 该成员变量原来所引用的对象引用计数减1,赋值对象引用计数加1. * * 4. weak是弱引用,相当于assign,不会造成循环引用。 * strong是强引用,相当于retain,引用存在则对象不会销毁. * Date: 2015/5/10 ************/
- #import <Foundation/Foundation.h>
- @interface LBXYCar : NSObject
- //合成name属性为:副本赋值,线程安全,更改getter名为wawa;setter名为nana。
- @property (copy, nonatomic, getter = wawa, setter = writeName:) NSString* name;
- //合成price属性为:直接赋值,线程安全。
- @property (assign, nonatomic) int price;
- @end
- @implementation LBXYCar
- @synthesize name;
- @synthesize price;
- @end
- #import <Foundation/Foundation.h>
- int main(int argc, const char * argv[])
- {
- @autoreleasepool
- {
- LBXYCar* aCar = [[LBXYCar alloc] init];
- [aCar writeName:@"开心大麻花"];
- [aCar setPrice:200];
- NSLog(@"%@的价格是:%d亿元。" ,aCar.name, aCar.price);
-
-
-
- }
- return 0;
- }
复制代码
|