При назначении только для чтения NSString свойства объекта, вам все еще нужно [копировать]? - PullRequest
0 голосов
/ 05 сентября 2011

У меня есть настройка 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 голосов
/ 05 сентября 2011

Используя предоставленный вами код

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

Ваш установщик свойства определяется с помощью простого назначения

Таким образом, вы можете использовать оба фрагмента кода для настройки значения assignStr, это будет правильно с точки зрения управления памятью; логичным должно быть использование классического шаблона присваивания.

Но на самом деле это больше о том, как вы обрабатываете мастер-значение (значение, которое вы возвращаете как доступное только для чтения) и чего вы хотите достичь с его помощью (извините, мне не так ясно в предоставленном примере , который не соответствует 100% заголовку вашей темы)

...