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進行指針賦值。
這三個屬性,我想用三篇來分別講述。這樣會更加清晰。
希望對您有所幫助