我有一个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
级别。
我使用的是ARC
,UITextField
都定义为strong
。
我一直试图寻找内存管理问题,但没有成功。
有什么想法吗?
谢谢, 西蒙
答案 0 :(得分:3)
在[self.view addSubview:favorites.view];
中,您正在使用收藏夹视图,但允许其控制器超出范围。创建favorites
的对象应该使用强引用来保留它,而不是使其成为局部变量。