分配对象的只读NSString属性时,是否还需要[复制]?

时间:2011-09-05 07:02:43

标签: nsstring copy properties readonly

我的MyClass设置如下。如果NSString属性是只读的,那么它应该已经设置为复制和自动释放。我还需要像下面那样复制它吗?

MyClass *myClass = [[MyClass alloc] init];
NSString *assignStr = [myClass.returnStr copy];
...
[myClass release];
[assignStr release];

MyClass *myClass = [[MyClass alloc] init];
NSString *assignStr = myClass.returnStr;
...
[myClass release];

MyClass.h

@interface MyClass : NSObject {    
@private
    NSString *returnStr;
}
@property (nonatomic, readonly) NSString *returnStr;
@end

MyClass.m

@implementation MyClass
@synthesize returnStr;
@end

1 个答案:

答案 0 :(得分:0)

使用您提供的代码

@interface MyClass : NSObject {    
@private
    NSString *returnStr;
}
@property (nonatomic, readonly) NSString *returnStr;
@end

您的属性设置器使用simple assignment

定义

因此,您可以使用两个代码段来调整assignStr值,这在内存管理方面是正确的;合乎逻辑的应该是使用经典的赋值模式。

但实际上更重要的是,你如何处理主值(你以只读方式返回的值)以及你想用它实现的目标(对不起,这对我提供的样本并不是很清楚,这似乎不匹配100%你的主题标题)