assign,copy,retain -Object-C中纠结的三个属性(copy)

http://blog.sina.com.cn/s/blog_7b9d64af01019943.html

assign,copy,retain

这三个属性在我们申明属性时,经常用到,那么到底时什么东西呢 ?有什么意义呢?那我们就来看清楚吧。
这次,要讲的属性为:copy

开始吧,不废话了,还是用代码说话。

-----------------*.h

 #import
@interface AddressCard : NSObject{
    NSString *name;
    NSString *email;
}
// copy 属性,编译器将在setter方法内生成实例变量的副本
@property(nonatomic,copy) NSString *name;
@property(nonatomic,copy) NSString *email;
- (void)setName:(NSString *)theName andEmail:(NSString *)theEmail;
- (void) print;
@end

------------*.m
 
#import "AddressCard.h"

@implementation AddressCard
@synthesize name;
@synthesize email;

- (void) print{
    NSLog(@"=====================");
    NSLog(@"name=%s",[name UTF8String]);
    NSLog(@"email=%s",[email UTF8String]);
    NSLog(@"=====================");
}

- (void)setName:(NSString *)theName andEmail:(NSString *)theEmail{
    self.name=theName;
    self.email=theEmail;
}

@end

实际使用中: 编译器将为我们生成相应的getter,setter方法:
getter方法:
-(NSString *)name{
    return name;
}

setter方法:
-(void)setName:(id)newValue{
 
    if (name != newValue) {
        [name release];
        name = [newValue copy];
    }
}

copy属性:

这样,如果我们使用self.name将会执行编译器为我们生成的setName方法。
如果用name,那将直接为变量name进行指针赋值。
这三个属性,我想用三篇来分别讲述。这样会更加清晰。
希望对您有所帮助
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值