0

我将我的应用程序设置为像这样运行:

- (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;
}

图像选择器出现后,我选择例如“相机胶卷”。之后,我按下返回按钮(标题为“照片”)。应用程序崩溃并给出 EXC_BAD_ACCESS 错误。当我启用僵尸对象时,我收到带有以下日志的“EXC_ARM_BREAKPOINT (subcode = 0xdefe)”错误。任何一个:

[UIView willRemoveSubview:]: message sent to deallocated instance 0x2088ea20

或者如果我继续进行图像选择:

-[PLImageScrollView willRemoveSubview:]: message sent to deallocated instance 0x1d82c910

另一方面,如果我创建一个新项目并仅将声明的代码放入 AppDelegate 中,则代码可以正常工作 - 没有错误。

现在,我正在开始一个新项目,我将从以前的项目中复制一些东西,以找出问题所在。如果有人知道为什么会出现这些错误,请分享您的想法。

4

2 回答 2

1

我发现了问题所在。AppDelegate 间接导入了我自己的自定义 UIView 类别,我(出于未知原因)在其中实现了dealloc方法。

实际上,所有视图都无法正确释放。我从该类别中删除了该 dealloc 方法,一切都很好。

于 2013-06-28T14:36:14.633 回答
0

try declaring UIImagePickerController* picker in AppDelegate.h as class level variable. picker is getting deallocated after - (BOOL)application:(UIApplication *)application finishes.

于 2013-06-28T13:10:57.727 回答