@property (readonly) にしておいたら、書き換えは出来ないと思っていたら、
そのクラスのメソッドであれば書き換える方法があったのでメモ
(iOS 5で試しています。)
Objective-C も Cなので、arrow accessor を使ったメンバーのアクセスが出来ます。
hoge->member
これを使った場合、public, protected, private のアクセス制限内であれば、
@property の readonly を設定した変数の書き換えが可能です。
ReadTestというクラスを作って試してみます。
[ReadTest.h]
@interface ReadTest : NSObject
@property (readonly, nonatomic, strong) NSString *value;
– (NSArray*)createReadTests;
@end
[ReadTest.m]
@implementation ReadTest
@synthesize value;
– (NSArray*)createReadTests
{
NSMutableArray *array = [[NSMutableArray alloc] init];
for (int i=0; i<10; i++) {
ReadTest *rt = [[[self class] alloc] init];
// エラーになる。
// rt.value = @”aa”;
// コレはいける
rt->value = @”aa”;
[array addObject:rt];
}
return array;
}
@end