解雇UIViewController后崩溃

时间:2014-11-10 16:47:03

标签: ios objective-c dealloc

由于我的应用程序有一段时间问题,只要我解除特定的UIViewController,App崩溃了Tread 1:breakpoint 1.1 7.1。

我已将问题缩小到容器视图'放置在被解雇的视图中。我注意到主控制器首先被释放,而容器视图控制器,但不知道问题是什么。我不确定这个问题是什么时候引入的,因为我在特定的界面问题上工作了几天,从未使用过'导航回来'选项。

我知道上面的描述非常模糊,但是如果调试可能原因的任何建议都会非常受欢迎,因为我在这个阶段花了好几个小时。

#0  0x00000001954440a8 in objc_exception_throw ()
#1  0x0000000184d05d88 in +[NSException raise:format:] ()
#2  0x0000000185b59f00 in NSKVODeallocate ()
#3  0x0000000184be5378 in CFRelease ()
#4  0x0000000184bf1938 in -[__NSArrayM dealloc] ()
#5  0x000000019545d724 in (anonymous namespace)::AutoreleasePoolPage::pop(void*) ()
#6  0x0000000184be8f94 in _CFAutoreleasePoolPop ()
#7  0x0000000184cbb750 in __CFRunLoopRun ()
#8  0x0000000184be91f4 in CFRunLoopRunSpecific ()
#9  0x000000018dd775a4 in GSEventRunModal ()
#10 0x000000018951a784 in UIApplicationMain ()
#11 0x00000001000cdc04 in main at /Users/Luuk/Documents/Xcode development/idoms-portal/iDoms/main.m:14
#12 0x0000000195ab2a08 in start ()

编辑: 我已将其缩小到将容器链接到视图控制器:

@interface DOPrototypeViewController : UIViewController <DOContentSizeCallback> {

    @protected
    DOMediaPlayerHelper* _mediaPlayerHelper;
    __weak NSString* _viewTitle;

    IBOutlet UIBarButtonItem *_previousPageBttn;
    IBOutlet UIBarButtonItem *_nextPageBttn;

    __weak IBOutlet UIView* _contentContainer;
    __weak IBOutlet UIScrollView* _scrollView;
}

@property (nonatomic, weak)  NSString* viewTitle;;

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *contentViewHeightConstraint;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *contentViewWidthConstraint;

一旦IB中的容器被链接,就会出现问题。如上所述,似乎首先在contentContainer控制器之前卸载DOPrototypeViewController。它必须与返回到我感觉到的contentContainer的父视图的链接有关。

2 个答案:

答案 0 :(得分:0)

我之前遇到过这种崩溃事件。通常会将消息发送到A:不再存在的对象。 B:不识别选择器。

开始查看堆栈跟踪。在崩溃之前看看最后几次通话是什么。这通常会指向正确的方向。

此外,如果您遇到问题,请在此处发布崩溃日志和堆栈跟踪。

答案 1 :(得分:0)

这是一个参考。我添加了一个观察者[[self view] addObserver:self forKeyPath:@&#34; frame&#34; options:0 context:nil];在两个控制器中,当我修复一个时,从未看过第二个并且没有删除它。