0

別のという名前を使用して、NSMutableAttributedStringという名前のディープ コピーを作成しようとしています。どちらも に設定されたプロパティであり、次のようにバックアップを作成します。textNSMutableAttributedStringtextBackup@property (nonatomic, retain)

NSMutableAttributedString *textBackupTemp = [self.text mutableCopy];
self.textBackup = textBackupTemp;
[textBackupTemp release];

その後、特定のシナリオが発生したときに、コピーを復元する必要があります。

NSMutableAttributedString *textTemp = [self.textBackup mutableCopy];
self.text = textTemp;
[textTemp release];

これはうまくいくようですが、次回は次textのようにアクセスします。

[self.text.string characterAtIndex: self.cursor.position-1]

次のエラーが表示されます。

*** Terminating app due to uncaught exception 'NSRangeException', reason: '-[__NSCFString characterAtIndex:]: Range or index out of bounds'

文字列のサイズが 43 ではなく 1 に変更されました。ここで何が起こっている可能性があります...

編集:問題を更新しました。

4

1 に答える 1

0

@property(nonatomic, assign)これは、textBackupインスタンス変数に入れていた私の愚かなエラーでした。に変更したところretain、すべてが機能するようになりました。

于 2012-06-19T07:26:04.047 に答える