在以下示例中,不stringWithString:(NSString *)
的theName
存儲器地址/位置複製到name
或它實際上拷貝從theName
到name
數據?澄清@property屬性
@interface AddressCard:NSObject
-(void)setName:(NSString *)theName;
@end
@implementation AddressCard
NSString *name;
-(void)setName:(NSString *)theName
{
if(name!=theName)
name = [NSString stringWithString:theName];
}
@end
如果我改變了代碼以下,這是什麼copy
有什麼不同?
@interface AddressCard:NSObject
@property (copy, nonatomic) NSString *name;
@end
@implementation AddressCard
@synthesize name;
@end
一般而言,確實copy
(@property
屬性)從一個變量複製數據或拷貝數據的地址到另一個?如果是後一種情況,當變量代表大數據時,我們不會消耗大量內存嗎?
謝謝您的時間和響應!
我覺得你對於「拷貝」的作用感到困惑。它所做的只是向接收方發送「複製」消息,在某些情況下(不可變的'NSStrings或'NSData'),將只返回其自身的保留版本,因爲沒有任何可複製的東西。 –
下面的答案有幫助嗎? – bryanmac
是的。他們非常有幫助。我對延遲承認表示歉意。 –