OC . 语法

96
Cy_Star
2017.10.17 15:29* 字数 156

一、点语法作用
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 
 */
日记本
Web note ad 1