黑马程序员---@property和@synthesize
来源:互联网 发布:mac文件夹权限设置 编辑:程序博客网 时间:2024/05/25 16:38
———Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ———
@property :自动生成成员变量的setter和getter方法的声明,用在interface 中
格式 :@property 类型 名称 ;(此处名称为成员变量名,但是不要写下划线)
如:@property int age ;
编译器会按照这个格式转换为- (void)setAge:(int)age; -(int)age;
@synthesize :自动生成成员变量的setter和getter方法的实现,用在implementation中
如:@synthesize age = _age ;
编译器会把这句代码自动转换为下面所示的代码:
{
_age=age;
}
- (int)age
{
return _age;
}
自动生成了_age的set和get方法的实现,并且访问_age;
所以说在只要像下面这样写:
{
int _age;
}
@property int age; // set和get方法的声明
@implementation Person
@synthesize age = _age;
就可以实现_age的set和get方法了
还可以简写:
简写1. 如果有两个成员变量都是int型的,那么就可以这样写:
@property int age,no; @synthesize age = _age , no = _no;
简写2. @synthesize speed =_speed,wheels =_wheels;
如果在interface中没有声明这两个成员变量,只有property,那么就会自动生成_speed的成员变量,并且是私有的。
简写3. 在xcode4.4以后只写@propertyint speed; 这么一句,实现中也不写什么就可以。
注意1:
@property int speed;这句话干了三件事。
1->.生成了一个private的_speed成员变量。
2->.声明了_speed的setter和getter方法。
3->.实现了_speed的set和get方法
缺点是自动生成的下划线成员变量是私有的,如果想要子类对象方法可以访问的话还需手动写出成员变量,编译器在编译过程中发现有成员变量就不会自动生成
注意2:
如果直接写@synthesize speed;那么默认就是会访问和speed名字一模一样的成员变量,如果没有就生成private的spped成员变量
注意3:
如果同时实现了set和get方法,那么编译器就不会生成下划线的成员变量了
如果手动生成了一个方法,那么编译器还是会生成下划线的成员变量
@synthesize的细节
1.@synthesize age=_age;
setter和getter实现中会访问成员变量_age
如果成员变量_age不存在,就会自动生成一个@private的成员变量_age
2.@synthesize age;
setter和getter实现中会访问成员变量age
如果成员变量age不存在,就会自动生成一个@private的成员变量age
手动实现
若手动实现了setter方法,编译器就只会自动生成getter方法
若手动实现了getter方法,编译器就只会自动生成setter方法
若同时手动实现了setter和getter方法,编译器就不会自动生成不存在的成员变量
即如果有手动实现的,那么就按照我们自己定义的,没有的程序会自动帮我们补齐
@property和@synthesize是帮助我们自动生成set和get方法的
- (void)setAge:(int)age
@interface Person : NSObject
//.m文件中
格式 :@synthesize 变量名 = 将要访问的成员变量名称 ;(此处变量名相当于方法声明中传的参数的名称)
- 黑马程序员-----@property和@synthesize
- 黑马程序员---@property和@synthesize
- 07.黑马程序员-@property和@synthesize
- 黑马程序员_@property和@synthesize
- 黑马程序员------OC基础-----@property和@synthesize
- 黑马程序员---Objective-C @property和@synthesize
- 黑马程序员——@property和@synthesize
- 黑马程序员-------OC----@property和@synthesize
- 黑马程序员学习笔记_OC之@property和@synthesize
- 10、黑马程序员-OC语言@property @synthesize和id
- 黑马程序员 —OC(@property和@synthesize)
- 黑马程序员————@property和@synthesize
- 黑马程序员--OC基础--@property和@synthesize关键字介绍
- 黑马程序员 --- OC中@property和@synthesize的用法
- 黑马程序员-@property与@synthesize的用法
- 黑马-OC语法-@property和@synthesize
- 黑马程序员-用点语法,@property关键字和@synthesize关键字优化set和get方法
- 黑马程序员_OC_第一个类,@property和@synthesize,Category,description方法
- UNIX实际用户ID和有效用户ID
- C++内存分配与复制构造函数笔试考察
- "ORA-00942: 表或视图不存在 "的原因和解决方法
- 循环语句中断
- 一个你所不知道的暗黑游戏圈
- 黑马程序员---@property和@synthesize
- Android开发系列(十五):【Android小游戏成语连连看】第一篇
- POJ 1026 Cipher(置换)
- 如何学好游戏3D引擎编程的一些经验
- bashrc和barh_profile 区别与联系
- unity 事件(顺序及功能说明)
- UVa 1585 - Score
- jQuery对象与dom对象相互转换
- Java中的多线程