iOS开发之oc(七)--@property和@synthesize

@property和@synthesize

首先从翻译来看: @property(翻译为:性质)和@synthesize(合成),是不是很像属性(声明)和实现?

1. @property

用在@inteface中

用来自动生成setter和getter的声明

用@property int age;就可以代替下面的两行

- (void)setAge:(int)age;  // setter
- (int)age;   // getter

2.@synthesize(只做了解)

用在@implementation中

用来自动生成setter和getter的实现

用@synthesize age = _age;就可以代替

- (int)age{
    return _age;
}
- (void)setAge:(int)age{
    _age = age;
}

3. @synthesize的细节(只做了解)

  • @synthesize age = _age;

>  setter和getter实现中会访问成员变量_age

> 如果成员变量_age不存在,就会自动生成一个@private的成员变量_age

  • @synthesize age;

>setter和getter实现中会访问成员变量age

>如果成员变量age不存在,就会自动生成一个@private的成员变量age

  • 手动实现

>若手动实现了setter方法,编译器就只会自动生成getter方法

>若手动实现了getter方法,编译器就只会自动生成setter方法

>若同时手动实现了setter和getter方法,编译器就不会自动生成不存在的成员变量

4. @property新特性(哈哈,现在就用这个)

  • 自从Xcode 4.x后,@property就独揽了@synthesize的功能。也就是说,@property可以同时生成setter和getter的声明和实现

  • 默认情况下,setter和getter方法中的实现,会去访问下划线 _ 开头的成员变量

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。