iOS 参数的属性

每当定义一个类变量的时候我们都会很习惯的在.h文件中写下类似下面那些定义

<span style="font-family:Comic Sans MS;font-size:18px;">@property (nonatomic,retain) MyClass * myclass;

@property (nonatomic,copy) MyClass * myclass;

@property (nonatomic,assign) MyClass * myclass;</span>
这三定义有什么不一样呢,下面我们就要讲讲参数属性了

参数属性一下几种类型

1.原子属性:  atomic(对属性加锁,多线程下是安全的,是默认值) ,nonatomic(不加锁,多线程不安全,但是速度快) 

2.读写属性:  readwrite(生成getter,setter方法,默认值) ,readonly(只生成getter方法)

3.set方法的处理:  assign(直接复制,默认值) , retain(先release 原来的值,再retain新值) , copy(先release原来之再copy新的值)

@property 的参数可以有三个参数,没赋值的时候就给默认值 (atomic , readwrite , assign) 在ARC状态下默认值就是( atomic , readwrite,strong)

set方法是根据属性来设置的

1.assign 用于基本的数据类型

<span style="font-family:Comic Sans MS;font-size:18px;">-(void)setA:(int)a
{
     _a=a;
}</span>

2.ratain 用于非字符串对象

<span style="font-family:Comic Sans MS;font-size:18px;">-(void)setA:(id*)a
{
     if(_a != a)//这个判断避免a重复赋值
     {
        [_a release];
         _a=a;
     }
</span><p><span style="font-family:Comic Sans MS;font-size:18px;">}</span></p>

3.copy 常用于字符串对象,block,NAArray,NSDictionary

-(void)setA:(NSString*)a
{
    if(_a!=a)
    {
<span style="white-space:pre">	</span>[_a release];
<span style="white-space:pre">	</span>_a = [a copy];
    }
}

先更新这里以后有新的见解再补充











  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值