第八篇:编译器特性:关键字property与synthesize用法
来源:互联网 发布:快手未知网络连接错误 编辑:程序博客网 时间:2024/06/05 03:02
1.property关键字:
》property 是一个编译器特性。
(1)在:xcode4.4版本以前
》用法:@property 指定成员变量类型 指定去掉下划线的成员变量名 ;
》用于在类声明中自动生成指定的 成员变量 set / get 方法(赋值 / 取值)的声明。
@interface Iphone : NSObject
{
int _cpu ;
}
//自动生成 - (void)setCpu:(int)cpu ; 和 - (int)cpu ; 两个方法的声明
@property int cpu;
@end
(2)xcode4.4版本以后property做了增强:
》帮助声明与实现:上述声明的同时,也会自动实现指定的 成员变量 set / get 方法(赋值 / 取值)。
》如果没有手动声明 成员变量,property 会在 .m 文件中自动帮助我们生成一个以"_"开头的成员变量(成员变量: _变量名 )。例如:@property int xxxx ; 则在 .m 文件中自动生成的成员变量:_xxxx。
》注意点:#如果想让子类继承父类的成员变量,还是必须在声明中手动定义成员变量。#如果你自己同时实现了一个成员变量的set / get 方法时,那么编译器不会在 .m 文件中自动成该成员变量,必须自己定义该成员变量。
2.synthesize关键字(实现):
》编译器特性。
(1) 明确告诉synthesize 后面的 变量 要赋值给 指定的成员变量:
》用法:@synthesize 变量名 = 成员变量 ;
》用于在类的实现中自动生成给 指定的 成员变量 set / get 方法(赋值 / 取值)的实现。
@implementation Iphone
/*
会实现:
- (void) setCpu:(int)cpu // - (void)set变量名大写:(int)变量名
{
_cpu = cpu ;
}
- (int) cpu // - (int)变量名
{
return _cpu ;
}
*/
@synthesize cpu = _cpu ;
@end
(2) 没有明确告诉synthesize 后面的 变量 要赋值给 指定的成员变量:
》用法:@synthesize 变量名 ;
》说明:这样会自动赋值给和 变量 同名的成员变量。等价:@synthesize 变量名 = 变量名;
》如果该类中有一个成员变量cpu,那么当这样写时:
@implementation Iphone
/*
会实现:
- (void) setCpu:(int)cpu
{
self->cpu = cpu ;
}
- (int) cpu
{
return self->cpu ;
}
*/
@synthesize cpu ;
@end
3.重写set / get 方法:
》当想控制外界传入的一些数据的合理性安全性的时候,我们就需要手动实现set 方法。
》再次强调:当我们手动同时实了一个成员变量的set / get 方法的时候,property 就不会自动给我们生成成员变量。
- 第八篇:编译器特性:关键字property与synthesize用法
- @property、@synthesize关键字的用法
- 关键字@property与@synthesize梳理
- 关键字@property和@synthesize
- 关键字@synthesize 和@property
- 黑马程序员-@property与@synthesize的用法
- @property关键字和@synthesize关键字
- @property和@synthesize 用法
- @property和@synthesize用法
- OC @property 和 @synthesize 关键字
- OC关键字@Category@property@synthesize
- OC-@property和@synthesize关键字
- @property与@synthesize作用
- IOS @property与@synthesize
- @property与@synthesize
- @property与@synthesize
- Iphone开发基础篇(七)-ObjectC之@property与@synthesize的用法
- iOS开发 @synthesize + @property 用法
- 无聊
- iOS开发-------简单通讯录(UITableView和CoreData的应用)
- linux下tty,控制台,虚拟终端,串口,console(控制台终端)详解http://blog.csdn.net/liaoxinmeng/article/details/5004743
- JAVA- 学习日记-命令行运行java程序
- 使用Keychain存储用户敏感信息
- 第八篇:编译器特性:关键字property与synthesize用法
- Android 面试题 (二)
- 关于Scanner类写在循环外面抛出异常后会无限循环的问题
- 减少mssql2008数据库的ldf文件
- 深入浅出CChart 每日一课——快乐高四第十六课 老马识途,ChartCtrl控件在WTL中的使用
- 用mocha写分页的测试用例
- NullReferenceException: Object reference not set to an instance of an object
- VC多线程编程
- 获得输入焦点