黑马程序员—OC基础--对象的属性封装

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ———



/***********

 *   今天对对象的属性封装进行学习.收获如下:

 *

 * 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: 定义settergetter的方法名。(setter名要带冒号,如:“setterabc

 *  |

 *  |    readonly/readwrite: readwrite为默认值,readonly指示系统只合成getter方法。

 *  |

 *  |__  retain: 该成员变量原来所引用的对象引用计数减1,赋值对象引用计数加1.

 *

 * 4.   weak是弱引用,相当于assign,不会造成循环引用。

 *      strong是强引用,相当于retain,引用存在则对象不会销毁.

 *

 ************/



代码实现:



#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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值