1

NSMutableString文字列をusingに追加するとappendString:、次のエラーが発生します。

Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: 'Attempt to mutate immutable object with appendString:'

私のコードは次のとおりです。

self.partialWord = [NSMutableString stringWithCapacity:self.wordLength];
for (int i=0; i<wordLength; i++) {
    [self.partialWord appendString:@"-"];
}

そして私のヘッダーファイルで:

@property (copy, nonatomic, readwrite) NSMutableString *partialWord;

オブジェクトが であるために不変であると言う理由がわかりませんNSMutableString[self.partialWord appendString:@"-"];パートが動かないのはなぜ?

4

1 に答える 1

5

問題はcopy、プロパティの属性によるものです。プロパティに値を割り当てると、コピーが作成されます。しかし、コピーはcopyand notで作成されるため、実際には ではなく をプロパティにmutableCopy割り当てることになります。NSStringNSMutableString

プロパティを取り除くcopyか、 を呼び出す独自のカスタム「セッター」メソッドを実装しますmutableCopy

于 2014-06-01T17:30:03.523 に答える