Instruments Time Profiler を使用すると、私のアプリではUITextField
のtext
プロパティの設定が非常に高価であることが明らかになったので、どうにかしてこれを最適化したいと考えています。既存の text/を変更する方が、毎回NSString
新しいオブジェクトを設定するよりも高速になる可能性があると考えたので、次のことを試しました。NSString
@interface MutableTextField : UITextField
- (NSMutableString*) mutableText;
@end
@implementation MutableTextField
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.text = [NSMutableString stringWithFormat:@""];
}
return self;
}
- (NSMutableString*) mutableText {
return (NSMutableString*)self.text;
}
@end
新しい文字列を設定するのではなく、次のようなことを行うという考えです。
[textField.mutableText replaceCharactersInRange:textRange withString:newText];
text
プロパティがUITextField
asにリストされているため、これが機能しないことがすぐにわかりました@property(nonatomic, copy) NSString *text
。コピー修飾子は、NSMutableString
テキストに設定した が ( immutable としてNSString
) コピーされてから設定されることを意味しUITextField
ます。
誰でもこれを回避する方法を見ることができますか? それとも私は立ち往生していますか?これが単に達成できない場合、UITextField
のテキストの設定を最適化できる他の方法はありますか?