@property和@synthesize
来源:互联网 发布:上市公司研发费用数据 编辑:程序博客网 时间:2024/06/16 08:18
@property和@synthesize
两个都是编译器指令,编译器指令是用来告诉编译器要做什么.
@property的历史存在两个阶段:
第一个阶段是Xcode4.X之前和之后.
在之前,@property只能生成setter/getter方法的声明:
格式:
@property int age;
会生成setter/getter方法的声明:
-(void)setAge:(int)age;-(int)age;
@synthesize会生成setter/getter方法的实现:
格式:
@synthesize age = _age;
setter方法声明:
-(void)setAge:(int)age {_age = age; } ```//getter方法实现:-(int)age {return _age; }
@property会告诉编译器做什么呢?
1.@property用在声明中告诉编译器声明成员变量的访问器(setter/getter)方法;
2.这样做的好处是我们可以免去手工书写setter方法和getter方法繁琐的代码;
@synthesize的注意点:
@synthesize age = _age;
在setter方法和getter方法的实现中会访问成员变量_age,如果成员变量_age不存在,就会自动生成一个@private的成员变量_age;
@synthesize age;
在setter方法和getter方法实现中会访问@synthesize后面的同名成员变量age,如果age不存在,就会自动生成一个@private的成员变量age;
多个属性可以通过一行@synthesize搞定,中间使用逗号链接:
@synthesize age = _age, number = _number, name =_name;
<————————分————————割—————————线———————>
自从Xcode4.X之后,@property可以同时生成setter和getter的声明和实现;
@property int age;
默认情况下,setter和getter方法中的实现,会访问下划线开头的成员变量(例如:_age), 如果没有就会自动生成一个开头的成员变量,自动生成的成员变量是私有变量,声明在.m中,在其他文件中无法查看,但是可以在本类中查看;@property只会生成简单setter/getter方法,不会进行数据判断;如果需要进行数据判断,我们需要重写getter/setter方法;
1.如果手动重写setter方法,编译器就只会自动生成getter方法;
2.如果手动生成getter方法,编译器就只会自动生成setter方法;
3.如果同时重写setter方法和getter方法,编译器就不会自动生成不存在的成员变量.
注释:在此,如果有@property int age;就不用再写_age这样的成员变量,编译器会自动生成一在.m中的私有成员变量_age.
@property还有一些修饰符:
@property int age;//默认的是可读可写;
@property (readonly) int age;//只生成setter方法不生成getter方法;(只读)
@property (readwrite) int age;//即生成setter方法又生成getter方法;
@property (getter = isGood) BOOL good;//通常BOOL类型的属性的getter方法要以is开头;
如果没有(getter = isGood),调用效果是:
[person good];
现在的调用效果是[person isGood];
[person isGood]
- @property和@synthesize浅解
- @property和@synthesize见解
- property和synthesize
- @property和@synthesize
- @synthesize和@property详解
- C15_OC05-@property和@synthesize
- @property和@synthesize
- property 和 synthesize解说
- @property和@synthesize
- iOS_@property和@synthesize
- @property和@synthesize
- 08-property和synthesize
- @property和@synthesize
- @property 和 @synthesize
- oc_study16 @property和@synthesize
- 关键字@property和@synthesize
- iOS@synthesize 和 @property
- @property和@synthesize
- 关于CSS外边距叠加问题
- mysql中的主要的参数
- TCP/IP(一):TCP/IP协议简单介绍
- xrandr命令解决ubuntu15.10双屏分辨率问题
- 网页监控之自己设计监控界面
- @property和@synthesize
- 一般时间函数
- Java生成六位验证码(发短信验证)
- 友元函数
- 对于web中导入自定义字体
- struts2项目插入中文到mysql数据库乱码的解决方法
- 大嘴巴 www.bigzb.com
- extern "C"
- JVM内存分配以及存储总结