zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    Kafka 1.0.0集群安装
    java实现以docx格式导出
    基于java处理.docx格式的word合并
    基于java 合并.doc和docx格式的Word文件
    Docker版本Jenkins的使用
    Codeforces 1243 D 0-1 MST
    Public model for matrix
    Codeforces 1220 E Tourism
    Codeforces 1221 G Graph And Numbers
    Codeforces 1221 F Choose a Square
  • 原文地址:https://www.cnblogs.com/iprogrammer/p/3245966.html
Copyright © 2011-2022 走看看