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
被复制(作为不可变的NSString
)然后设置 - 这意味着我实际上无法为UITextField
.
任何人都可以看到解决这个问题的方法吗?还是我卡住了?如果这根本无法实现,那么还有其他方法可以优化 aUITextField
的文本设置吗?