Objective C 总结(四):封装数据

  1. 对象的数据是类内定义的字段,属性是对字段的封装,编译器会自动为属性生成相应的字段及读取方法。
    传统的定义方法
    @interface XYZPerson : NSObject
    {
        @private
        NSString *_firstName;
    NSString *_name;
    float: _height; } - (NSString *) firstName; - (void) setFirstName : (NSString *) firstName; - (float) height; - (void) setHeight: (float) height; @end

    用属性的定义方法

    @interface XYZPerson : NSObject
    @property (copy) NSString *firstName;
    @property float height;
    @end

    实现

    @implementation XYZPerson
    @synthesize firstName;
    @synthesize height;
    @end

    属性默认是readwrite修饰的,我们可以定义一个只读的属性,用readonly修饰

    @property (readonly) NSString *firstName;

    自定义属性的访问器

    @property (readonly, getter=isFinished) BOOL finished;

    属性的访问语法

    somePerson.firstName = @"bob";
    somePerson.height = 199.0;
    NSLog("Name is %@", somePerson.firstName);

     

  2. 能定义字段与属性的自由结合
    @implementation XYZPerson
    @synthesize propertyName = instanceVariableName;
    ...
    @end
    @implementation XYZPerson
    @synthesize firstName = _name;
    @end

    这样对firstName的访问实际上是访问了_name字段。

  3. 属性默认是修饰atomic,在非多核心的处理器,可以用nonatomic修饰,可以提升点性能
    @property (nonatomic, readonly) NSString *firstName;

     

posted @ 2013-08-08 15:47  万有引用  阅读(208)  评论(0编辑  收藏  举报