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进行指针赋值。
这三个属性,我想用三篇来分别讲述。这样会更加清晰。
希望对您有所帮助