object-c中get/set方法

如eclipse一样,object-c自2.0以后提供了简单的成员变量的get、set方法。

操作如下:

在类接口本分使用@property指令定义属性,1,使用@property定义属性使无须放在类接口部分的花括号中,可以直接放在@interface和@end之间进行定义

2,这步是可选的,如果程序需要改变getter/setter方法对应的成员变量的变量名称,则可在该类的实现部分加上@synthesize指令。

@synthesize window=_window;这行代码用以告诉程序合成的property对应的成员变量为_window,而不是window。

实例:#import<Foundation/Foundation.h>

@interface User:NSObject

@property (nonatomic) NSString* name;

@property NSString* pass;

@property NSDate* birth;

@end


#import "User.h"

@implementation User

@synthesize name=_name;

@synthesize pass;

@synthesize biirth;

//实现自定义的setName方法

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

self->_name=[NSString stringWithFormat:@"+++@",name];

}

@end


附加:当使用@property定义property时,还可以在@property和类型之间用括号添加一些额外的指示符:如assign,atomic。nonautomic,copy

assign------该指示符指定对属性只是进行简单的赋值,不更改对赋值的值得引用计数。(引用计数是object-c中的内存回收钙奶,当一个对象的引用计数大于0是,表示该对象还不应该被回收,用于NSI那个人等基础类型,以及double,short和结构体等数据类型不存在内存回收的问题,所以使用assign即可)

atomic------制定合成的存取方法是否为原子操作,原子操作是指是否线程安全。如果使用atomic,当一个线程进入读取方法的方法体后,其他线程无法进入该存取方法,这样可以避免多线程操作影响数据的完整性,默认情况下是atomic,实际应用中一般是nonautomic.


copy-----这种情况下,当调用setter方法对成员变量赋值时,会将被赋值的对象赋值一个副本,再将该副本赋值给成员变量。

实例:

Book* book=[[Book alloc] init];

NSMutableString* str=[NSMutableString stringWithString:@"hello"];

[book setName:str];

//此时book的name属性值为“hello”

[str appendString:@world];

//此时再次输出name的属性值时则为helloworld。



给getter、setter方法设置别名

#import<Foundation/Foundation.h>

@interface Book:NSObject

@property(assign,nonatomic,getter=qwe,setter=qaz;) int price;

@end





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值