我将我的应用设置为运行如下:
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:
[[UIScreen mainScreen] bounds]];
UIImagePickerController* picker = [[UIImagePickerController alloc] init];
self.viewController = picker;
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
出现图像选择器之后,我选择了#34; Camera Roll"。之后我按下后退按钮(标题为"照片")。应用程序崩溃导致EXC_BAD_ACCESS错误。 当我启用zombie对象时,我会收到" EXC_ARM_BREAKPOINT(子码= 0xdefe)"以下日志出错。之一:
[UIView willRemoveSubview:]: message sent to deallocated instance 0x2088ea20
或者如果我继续选择图像:
-[PLImageScrollView willRemoveSubview:]: message sent to deallocated instance 0x1d82c910
另一方面,如果我创建一个新项目并在AppDelegate中只放置声明的代码,代码就可以正常工作 - 没有错误。
现在,我正在开始一个新项目,我将从我之前的项目中复制一些内容,以找出问题所在。如果有人知道为什么会出现这些错误,请分享您的想法。
答案 0 :(得分:1)
我发现了什么问题。 AppDelegate间接导入了我自己的自定义UIView类别,其中我(出于未知原因)实现了 dealloc 方法。
所有观点实际上都无法正确解除分配。我从那个类别删除了dealloc方法,一切都很好。
答案 1 :(得分:0)
尝试将UIImagePickerController* picker
中的AppDelegate.h
声明为类级别变量。 - (BOOL)application:(UIApplication *)application
完成后,选择器将被取消分配。