zoukankan      html  css  js  c++  java
  • OC语法5——@property和@synthesize

    @property和@synthesize:

      我们回想一下:

      在OC中我们定义一个Student类需要两个文件Student.h 和 Student.m。

      Student.h(声明文件):定义成员变量,并且为了使外界可以访问操作这些成员变量,需要定义set和get方法提供给外界。最后还要定义自定义的功能方法。

      Student.m(实现文件):实现文件实现set和get方法,并且实现自定义的功能方法。

      假如,Student类中有很多个成员变量,那我们若手动定义成员变量,再一个一个声明它们的set和get方法,并且一个一个的在Student.m文件中实现set和get方法,这样无疑是无聊而低效的。

      为了提高开发效率,XCode为了提供了便捷:

      OC中引入了@property关键字。

    @property  char *  _name;
    @property  int  _age;

    在Student.h文件中这样写,XCode编译器会自动生成set和get的方法声明。

    注意:千万要注意,@property int _age; 替换的只是set和get方法,所以在花括号里还是要照常定义成员变量,而只在声明set和get方法的地方用@property取代。

    而在Student.m文件中,用@synthesize可以自动生成set和get方法的实现,从而取代手写代码。

    需要说明的是,@synthesize _age; 会自动在Student.h文件中寻找名为_age的成员变量。若有,则实现set和get方法;若无,则在Student.m文件中自己创建个_age成员变量,但该_age是私有的(private)!另外,若这样写@synthesize age; 编译器会自动在.h文件中寻找age,若无,则自动创建一个变量_age。注意,是_age。

    另外需要说明的是:在XCode 4.5以上版本中,只要编译器检测到了Student.h文件中的@property int _age;不仅会自动在Student.h文件中声明set和get方法,还会自动在Student.m文件中实现set和get方法。

    所以,只需开发者在Student.h中写@property int _age; 不仅把不用手写set,get方法的声明和实现了,甚至连@synthesize也不用写了!

    在以后的开发中我们就这样写,很方便。但我们也要清楚它最本质的代码写法。

  • 相关阅读:
    测试工具文件4. 数据分析——定义analyseXML
    关于sprintf的"_CRT_SECURE_NO_WWARNINGS"问题的解决
    测试工具文件3. 输出文件——定义TestLog
    测试工具文件2. 支持代码——定义TestUtility
    测试工具文件1. 平台问题——定义Platform.h
    python之正则表达式
    python之字典总结
    python之global关键字的用法
    python + selenium 常用方法验证页面上的UI元素
    python + selenium 元素定位方法 (索引)By属性
  • 原文地址:https://www.cnblogs.com/wangerxiansheng/p/4296825.html
Copyright © 2011-2022 走看看