触摸UITextField时出现“发送到解除分配的实例的消息”崩溃

时间:2013-08-28 10:25:02

标签: ios memory-management crash uitextfield

我有一个UIViewController的实现,其中包含viewDidLoad的以下代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Do any additional setup after loading the view from its nib.
    for (int i=0; i<10; i++)
    {
        NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

        NSString *speedDial = [prefs stringForKey:[NSString stringWithFormat:@"%s%i", "fav",i]];
        if ([speedDial length] > 0)
            [self getTextField:i].text = speedDial;

        [self getTextField:i].returnKeyType = UIReturnKeyDone;
        [self getTextField:i].delegate = self;
    } 
}

当我触摸屏幕上的UITextField时,应用程序崩溃,我得到输出:“消息发送到解除分配的实例”。按下该视图上的按钮时出现同样的错误,所以我猜错误是UIViewController级别。 我使用的是ARCUITextField都定义为strong。 我一直试图寻找内存管理问题,但没有成功。

有什么想法吗?

谢谢, 西蒙

1 个答案:

答案 0 :(得分:3)

[self.view addSubview:favorites.view];中,您正在使用收藏夹视图,但允许其控制器超出范围。创建favorites的对象应该使用强引用来保留它,而不是使其成为局部变量。