【问题标题】:When assigning a readonly NSString property of an object, do you still need to [copy]?分配对象的只读 NSString 属性时,还需要[copy]吗?
【发布时间】:2011-09-05 07:02:43
【问题描述】:

我的 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

【问题讨论】:

    标签: nsstring copy properties readonly


    【解决方案1】:

    使用您提供的代码

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

    你的属性设置器是用simple assignment定义的

    所以你可以同时使用代码 sn-p 来调整 assignStr 值,这在内存管理方面是正确的;合乎逻辑的应该是使用经典的分配模式。

    但实际上它更多的是关于如何处理主值(您以只读方式返回的值)以及您想用它实现什么(抱歉,在提供的示例中这对我来说不是很清楚,这似乎与您的主题标题不匹配 100%)

    【讨论】:

      猜你喜欢
      • 2012-06-08
      • 1970-01-01
      • 2018-07-21
      • 2021-06-30
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      • 2021-05-12
      相关资源
      最近更新 更多