プロパティとしてを持っているクラスがありNSMutableDictionary
ます:
@interface Alibi : NSObject <NSCopying>
@property (nonatomic, copy) NSMutableDictionary * alibiDetails;
@end
次のコンストラクターを使用します。
- (Alibi *)init
{
self = [super init];
_alibiDetails = [NSMutableDictionary dictionary];
return self;
}
およびコピー方法:
- (Alibi *)copyWithZone:(NSZone *)zone
{
Alibi *theCopy = [[Alibi alloc] init];
theCopy.alibiDetails = [self.alibiDetails mutableCopy];
return theCopy;
}
呼び出そうとするとsetObject:ForKey:
、ランタイムエラーが発生しますmutating method sent to immutable object
。
ビューコントローラでAlibi
オブジェクトをとして宣言し、@property (copy, nonatomic) Alibi * theAlibi;
で初期化self.theAlibi = [[Alibi alloc] init];
しviewDidLoad
ます。
クラッシュする行は次のとおりです。
NSString * recipient;
recipient = @"Boss";
[self.theAlibi.alibiDetails setObject:recipient forKey:@"Recipient"];
ここで私が間違っていることを教えてください。iPhoneでiOS5用にコーディングしています。