启用Zombie Objects后,当我尝试编辑UITextField(textLvl)时,我能够看到以下错误:
2013-01-13 13:27:10.509 testob[18418:907] *** -[NSConcreteMutableAttributedString
_UIKBStringWideAttributeValueForKey:]: message sent to deallocated instance 0x2066a1f0
我已经发布了导致下面问题的代码部分,它似乎特别是“textField.text = self.storeText;”部分 - 当我发表评论时,问题就会消失。
你或许可以告诉我,我不是最有经验的iOS开发者,为什么我的UITextView会在我设置文本后解除分配?请帮忙!
另外,我之前从未听说过“_UIKBStringWideAttributeValueForKey” - 有什么想法吗?
全部谢谢!
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
NSLog(@"Text began editing");
self.storeText = textField.text;
textField.text = @"";
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
if (textField == textLvl){
if ([textField.text isEqualToString:@""]){
textField.text = self.storeText;
NSLog(@"No Text");
}
self.conv = [textField.text intValue];
if (self.conv >= 101){
textField.text = @"100";
UIAlertView *successAlert = [[UIAlertView alloc] initWithTitle:@"Oh no!" message:@"Can't be higher than 100." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[successAlert show]; }
}}
答案 0 :(得分:2)
这可能是框架内部的错误。我建议您添加 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
并将文本字段文本设置为nil,然后重置文本字段文本。
答案 1 :(得分:1)
我认为这里真正的答案是你正在处理一个UITextField,它被设置为处理NSAttributedString而不是NSString。您会注意到,如果您正在处理.xib中定义的UITextField,那么它的top属性选项现在是“Text”,其中包含Plain或Attributed选项。
如果您的文本字段已切换为属性,那么如果您继续处理文本字段,就会发现此错误,就好像它是Plain一样。
答案 2 :(得分:1)
我的文本域位于xib文件中,并且它的委托已连接到文件所有者。这导致了我的崩溃,因为该文件的所有者是NSObject。
我实际上想将代理连接到单元格,而不是文件所有者。
答案 3 :(得分:0)
使用乐器,请参阅retains / releases:
如果您需要查看对象使用仪器的保留,释放和自动释放的位置:
在仪器中运行,在分配中设置“记录参考计数”(您必须停止记录以设置选项)。导致选择器运行,停止记录,搜索那里的ivar(datePickerView),向下钻取,你将能够看到所有保留,释放和自动释放发生的位置。