• 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也不用写了!

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

  • 相关阅读:
    Struts2的struts.properties文件在哪儿啊?
    StrutsPrepareAndExecuteFilter的作用
    【转】Eclipse配置Struts2问题:ClassNotFoundException: org...dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    怎么找到MyEclipse->add struts capabilities
    图像金字塔
    浅析人脸检测之Haar分类器方法
    SIFT算法学习
    OpenCV3.1使用SIFT
    OpenCV头文件包含问题
    OpenCV例程实现人脸检测
  • 原文地址:https://www.cnblogs.com/wangerxiansheng/p/4296825.html
Copyright © 2020-2023  润新知