property指令

property

 

@property基本概念知识:

1. 【理解】什么是@property

2. 【掌握】@property基本使用

1.什么是@property

 @property是编译器的指令

     什么是编译器的指令 ?

     编译器指令就是用来告诉编译器要做什么!

@property会让编译器做什么呢?

     @property 用在声明文件中告诉编译器声明成员变量的的访问器(getter/setter)方法

     这样的好处是:免去我们手工书写getter和setter方法繁琐的代码

 

2.@property基本使用

- 在@inteface中,用来自动生成setter和getter的声明

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

- (int)age;   // getter

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

@propert编写步骤

1.@inteface@end之间写上@property

2.@property后面写上需要生成getter/setter方法声明的属性名称, 注意因为getter/setter方法名称中得属性不需要_, 所以@property后的属性也不需要_.并且@property和属性名称之间要用空格隔开

3.@property和属性名字之间告诉需要生成的属性的数据类型, 注意两边都需要加上空格隔开

 

 

 @property增强知识:

 

1. 【掌握】@property增强

 

2. 【掌握】@property增强注意点

 

 

1.@property增强

- 自从Xcode 4.x后,@property可以同时生成setter和getter的声明和实现

 

@interface Person : NSObject

{

    int _age;

}

@property int age;

@end

2.@property增强注意点

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

 如果没有会自动生成一个_开头的成员变量,自动生成的成员变量是私有变量, 声明在.m中,在其它文件中无法查看,但当可以在本类中查看

 

- @property只会生成最简单的getter/setter方法,而不会进行数据判断

如果需要对数据进行判断需要我们之间重写getter/setter方法

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

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

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

@property修饰符知识:

1. 【掌握】@property修饰符

- 修饰是否生成getter方法的

     readonly    只生成setter方法,不生成getter方法

     readwrite  既生成getter 又生成setter方法(默认)

@property (readonly) int age

 

指定所生成的方法的方法名称

     getter=你定制的getter方法名称

     setter=你定义的setter方法名称(注意setter方法必须要有 :)

 

@property (getter=isMarried)  BOOL  married;

说明,通常BOOL类型的属性的getter方法要以is开头

 

 1.相同类型的property修饰符不能同时使用

 2.不同类型的property修饰符可以多个结合在一起使用, 多个之间用,号隔开

 3.iOS开发中只要写上property, 那么就立刻写上nonatomic

 

 readonly: 只会生成getter方法

 readwrite: 既会生成getter也会生成setter, 默认什么都不写就是readwrite

 

 getter: 可以给生成的getter方法起一个名称

 setter: 可以给生成的setter方法起一个名称

 

 retain: 就会自动帮我们生成getter/setter方法内存管理的代码

 assign: 不会帮我们生成set方法内存管理的代码, 仅仅只会生成普通的getter/setter方法, 默认什么都不写就是assign

 

 多线程

 atomic :性能低(默认)

 nonatomic :性能高

 在iOS开发中99.99%都是写nonatomic

 

posted @ 2015-11-26 14:33  a滴答  阅读(182)  评论(0编辑  收藏  举报