OC . 语法

作者: Cy_Star | 来源:发表于2017-10-17 15:29 被阅读22次

    一、点语法作用
    1、方便其他语言程序员很快转到OC开发
    2、程序设计简单化
    3、隐藏了内存管理细节
    4、隐藏多线程、同步、加锁细节
    当然是使用点语法 ** . ** 还是实用中括号的方式 [** **],随个人喜好。
    二、属性可以在不使用括号的情况下使用点语言,无需调用 [ ** **] 可以使用点语法来访问,看似是直接访问 ** . ** 的变量,但属性始终调用方法,而方法可以访问对象的数据。

      如下
      setter函数
      -(void) setAge:(int)newAge{
               age = newAge;
      }
      getter函数
      -(int)age{
                return age;
      }
      使用方式
      1、
        [** . setAge:20];
        int a = [** age];
      2、
          ** . age = 20;  ----- //相当方式1上面的 [** . setAge:20]; ,
          系统编译器会把  ** . age = 20 在编译的时候自动转成  [** . setAge:20]; 。
          int a = ** . age;   ------ //相当方式1上面的  int a = [** age]; 。
    /*
        方式2 是 @property 让编译器自动产生函数申明,编译器会自动生成setter 和 getter函数,这样就不用写上面的2个函数:
             -(void) setAge:(int)newAge;
             -(int)age;
         只需要一行就可以代替了:@property int age; 。
      @synthesize 就是编译器自动实现getter 和setter 函数,这样就不用写 :
          -(void) setAge:(int)newAge{
                   age = newAge;
          }
          -(int)age{
                   return age;
          }
    
      只需要 @synthesize  age; 就可以了。
      当然怎么使用还是看自己个人喜欢❤️或者看情况来决定。
      那么字段 age 会跟 -(int)age 同名都是 age ,这样不好区分,OC给字段提供了这种命名方式来区分
      {
           int  _age;
      }
      @property int age;    
        同样如果使用@synthesize  age; 改成 @synthesize  age = _age; ,这样子就是说明不管是 setter 还是 getter 函数使用字段是 _age 而不是 age 
     */

    相关文章

      网友评论

        本文标题:OC . 语法

        本文链接:https://www.haomeiwen.com/subject/xpdduxtx.html