iOS property两种实现方法区别的简单介绍
2016-03-10 17:32
651 查看
在声明property属性后,有2种实现选择
@synthesize
编译器期间,让编译器自动生成getter/setter方法。
当有自定义的存或取方法时,自定义会屏蔽自动生成该方法
@dynamic
告诉编译器,不自动生成getter/setter方法,避免编译期间产生警告
然后由自己实现存取方法
或存取方法在运行时动态创建绑定:主要使用在CoreData的实现NSManagedObject子类时使用,由Core Data框架在程序运行的时动态生成子类属性
总结:
1:程序中定义 "变量类型*变量名;" , 使用@synthesize 变量名;然后他会默认生成的代码名称符合如下格式:
//get方法:
-(变量类型*) 变量名()
{
return 变量名;
}
//set方法:
-(void) set变量名(变量类型*newValue) //注意这里的变量名首字母是大写的
{
//具体的实现方式根据@property的属性不同而不同, copy, retain, strong, assign,nonatomic, atomic等。
}
2:当程序中使用 self.变量名与直接 变量名 是不一样的。
self.变量名: 访问的是属性方法,具体是get还是set就需要看是写在左边还是右边了。
变量名:访问的就是属性本身。
3:具体 set的方法实现与@property 具体声明有关。
4:@synthesize 相对于@dynamic 而前,自动添加申明属性变量,同时还为其添加了get 与 set 方法;
@synthesize
编译器期间,让编译器自动生成getter/setter方法。
当有自定义的存或取方法时,自定义会屏蔽自动生成该方法
@dynamic
告诉编译器,不自动生成getter/setter方法,避免编译期间产生警告
然后由自己实现存取方法
或存取方法在运行时动态创建绑定:主要使用在CoreData的实现NSManagedObject子类时使用,由Core Data框架在程序运行的时动态生成子类属性
总结:
1:程序中定义 "变量类型*变量名;" , 使用@synthesize 变量名;然后他会默认生成的代码名称符合如下格式:
//get方法:
-(变量类型*) 变量名()
{
return 变量名;
}
//set方法:
-(void) set变量名(变量类型*newValue) //注意这里的变量名首字母是大写的
{
//具体的实现方式根据@property的属性不同而不同, copy, retain, strong, assign,nonatomic, atomic等。
}
2:当程序中使用 self.变量名与直接 变量名 是不一样的。
self.变量名: 访问的是属性方法,具体是get还是set就需要看是写在左边还是右边了。
变量名:访问的就是属性本身。
3:具体 set的方法实现与@property 具体声明有关。
4:@synthesize 相对于@dynamic 而前,自动添加申明属性变量,同时还为其添加了get 与 set 方法;
相关文章推荐
- MyEclipse Web Project转Eclipse Dynamic Web Project
- 浅谈汇编器、编译器和解释器
- 让我们做个简单的解释器(三)
- 让我们做个简单的解释器(一)
- 用 350 行代码从零开始,将 Lisp 编译成 JavaScript
- DLL(Dynamic Linkable Library) 详解说明
- 深入C# 4.0 新特性dynamic、可选参数、命名参数的详细介绍
- C# Dynamic关键字之:解析dynamic就是Object
- C# Dynamic关键字之:dynamic为什么比反射快的详解
- Dynamic和Var的区别及dynamic使用详解
- C# dynamic关键字的使用方法
- PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
- iOS开发之路--微博“更多”页面
- 基于JSP编译器基本语法的使用详解
- C#命令行编译器配置方法
- Java虚拟机JVM性能优化(二):编译器
- AngularJS HTML编译器介绍
- iOS开发之路--微博骨架搭建
- iOS开发使用JSON解析网络数据