gpt4 book ai didi

iphone - 我在单例中使用保留还是复制?

转载 作者:可可西里 更新时间:2023-11-01 03:07:17 26 4
gpt4 key购买 nike

我在某处读到,在对象中使用 NSString 时,必须使用复制而不是保留。有人可以解释这是否正确以及为什么吗?

例如,我的单例声明如下:

#import <foundation/Foundation.h>
@class FaxRecipient;

@interface MyManager : NSObject {
NSString *subject;
NSString *reference;
NSString *coverSheet;
FaxRecipient *faxRecipient;

}

@property (nonatomic, retain) NSString *test1;
@property (nonatomic, retain) NSString *test2;
@property (nonatomic, retain) NSString *test3;
@property (nonatomic,retain) FaxRecipient *faxRecipient;



+ (id)sharedManager;

@end

最佳答案

我认为“必须”在必须 的意义上有点强。您可以使用copyretain,但您应该通常使用copy你的 NSString* 属性是因为:

  1. 您通常不希望字符串属性在您的眼皮底下发生变化;
  2. NSMutableStringNSString 的子类,因此完全有可能有人将您的 NSString* 属性设置为指向可变字符串,从而创造了在您使用字符串时更改字符串的可能性;
  3. 对于像 NSString 这样的不可变类,复制操作最终只会保留原始对象。

考虑到这三点,很难想出一个好的理由来为您的 NSString 属性使用 retain 而不是 copy

关于iphone - 我在单例中使用保留还是复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6183434/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com