码迷,mamicode.com
首页 > 其他好文 > 详细

OC - 属性、点语法

时间:2016-02-24 22:25:15      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

在OC中,为单一实例变量赋值的方法称为setter方法(设置器)

在OC中,读取实例变量值得方法称为getter方法(访问器)

OC里规定了setter、 getter方法的书写格式

setter方法的书写格式如下:

- (void)setAge:(NSInteger)age;

注意:set + 实例变量名(首字母大写),忽略下划线。

getter方法的书写格式如下:

- (NSInteger)age;

注意:返回值类型与变量类型一直,方法与实例变量名相同,忽略下划线

属性

/*

属性的声明:在.h文件中使用@property声明属性。

以实例变量_name为例

属性的声明

@property NSString *name;

或者

@property (nonatomicc, retain)NSString *name;

相当于在@interface中声明了两个方法:

setter 方法

- (void)setName:(NSString *)name;

getter方法

- (NSString *)name;

 

属性的实现,在.m文件中使用@synthesize实现属性

以实例变量_name为例:

属性的实现

@synthesize name = _name;

相当于在@implementation实现了

setter方法

- (void)setName:(NSString *)name {

_name = name;

}

getter 方法

- (NSString *)name {
return _name;

}

*/

在Xcode4.5以及以后的版本,@synthesize可以省略,只使用@property声明属性即可。

在默认情况下,当没有实现setter和getter方法时,通过@synthesize可以自动生成标准的setter和getter方法。

属性的作用是生成setter以及getter方法的实现,如果方法内部操作的实例变量未定义,系统会自动生成一个,_属性名的实例变量,但是生成的实例变量可见度是私有的,子类不可访问。

 

. 一旦同时重写了setter、 getter方法,并且没有实现@synthesize, @synthesize就不再生成实例变量

 

属性的特性:

1. 读写性控制(readonly. readwrite. setter=. getter=)

readonly:制度状态,是告诉编译器,属性只生成getter方法,不生成getter方法。

 

readwrite:读写状态,是告诉编译器,属性既生成setter方法又生成getter方法,既有设置器,也有访问器,默认读写特性

 

setter=: 指定属性生成的setter方法的名字

 

getter=:指定属性生成的getter方法的名字

2. 原子性控制(nonatomic. atomic)

atomic:原子特性,setter、 getter方法在多线程访问下绝对安全,即setter、 getter内部做了多线程访问处理,默认的原子特性。

nonatomic:非原子特性,setter、getter方法内部不会做多线程访问处理,仅仅是普通的setter。getter方法。

(声明属性时,通常使用nonatomic,某些属性需要线程安全的时候,才会定义为atomic)

3. 语义特性

语义设置(assign. retain. copy)

如果属性是非对象类型(比如int  float等) 属性的语义设置使用assgin

如果属性是对象类型(比如NSString等)属性的语义设置使用retain.

如果属性是对象类型并且想得到对象的副本,使用copy。

 

OC - 属性、点语法

标签:

原文地址:http://www.cnblogs.com/scgazp/p/5215127.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!