Ios iAction正在导致应用程序崩溃。没有给出理由

Ios iAction正在导致应用程序崩溃。没有给出理由,ios,objective-c,Ios,Objective C,我有一个子类UIView,名为ToolbarView。我通过界面生成器创建了它的界面。它由3个ui按钮组成。中央按钮连接到iAction,而其他两个按钮仅作为iOutlets连接。以下是相关代码: 工具栏视图.m: @implementation ToolbarView @synthesize homeButton, otherButton, delegate; - (id)initWithFrame:(CGRect)frame { self = [super initWithFra

我有一个子类
UIView
,名为
ToolbarView
。我通过界面生成器创建了它的界面。它由3个
ui按钮组成。中央按钮连接到
iAction
,而其他两个按钮仅作为
iOutlets
连接。以下是相关代码:

工具栏视图.m:

@implementation ToolbarView
@synthesize homeButton, otherButton, delegate; 

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        self = [[[NSBundle mainBundle] loadNibNamed:@"ToolbarView" owner:self options:nil] lastObject];
    }
    return self;
}
工具栏视图.h:

@interface ToolbarView : UIView

@property (strong, nonatomic) IBOutlet UIButton* homeButton;
@property (strong, nonatomic) IBOutlet UIButton* otherButton;

@property (weak, nonatomic) id delegate; 

- (IBAction)launchCamera:(id)sender;

@end
这是xib及其连接:

每次我按下摄像头按钮,应用程序就会崩溃,控制台只写(lldb),除此之外什么都没有。有人知道我哪里出错了吗

更新:以下是回溯:

* thread #1: tid = 0xbf136, 0x00000001025d7fcb libobjc.A.dylib`objc_msgSend + 11, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x18)
    frame #0: 0x00000001025d7fcb libobjc.A.dylib`objc_msgSend + 11
    frame #1: 0x0000000101172f06 UIKit`-[UIApplication sendAction:to:from:forEvent:] + 80
    frame #2: 0x0000000101172eb4 UIKit`-[UIApplication sendAction:toTarget:fromSender:forEvent:] + 17
    frame #3: 0x000000010124f880 UIKit`-[UIControl _sendActionsForEvents:withEvent:] + 203
    frame #4: 0x000000010124edc0 UIKit`-[UIControl touchesEnded:withEvent:] + 530
    frame #5: 0x00000001011a9d05 UIKit`-[UIWindow _sendTouchesForEvent:] + 701
    frame #6: 0x00000001011aa6e4 UIKit`-[UIWindow sendEvent:] + 925
    frame #7: 0x000000010118229a UIKit`-[UIApplication sendEvent:] + 211
    frame #8: 0x000000010116faed UIKit`_UIApplicationHandleEventQueue + 9579
    frame #9: 0x00000001027f4d21 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    frame #10: 0x00000001027f45f2 CoreFoundation`__CFRunLoopDoSources0 + 242
    frame #11: 0x000000010281046f CoreFoundation`__CFRunLoopRun + 767
    frame #12: 0x000000010280fd83 CoreFoundation`CFRunLoopRunSpecific + 467
    frame #13: 0x00000001045bdf04 GraphicsServices`GSEventRunModal + 161
    frame #14: 0x0000000101171e33 UIKit`UIApplicationMain + 1010
  * frame #15: 0x00000001000025e3 Eventfeed`main(argc=1, argv=0x00007fff5fbfecd0) + 115 at main.m:16

以下方法可以了解有关崩溃的更多详细信息或修复崩溃:

  • 使用“bt”作为崩溃后控制台中的回溯跟踪,了解有关崩溃的更多详细信息

  • 检查视图类是否与XIB链接

  • 已启用
    NSZombieEnabled
    ,然后检查

  • 删除摄像头
    iAction
    重新创建

  • 添加异常断点
    ,然后检查


  • 文件的所有者必须设置为实例化控制器的类,并且referencedView出口必须绑定到所需的实际视图。确认一次。

    首先,添加异常断点

    第二,试着审查执行情况

    -(iAction)启动摄像头:(id)发送方

    在这一点上,你更有可能找到解决办法。但如果没有,请尝试删除

    ~/Library/Developer/Xcode/DerivedData


    并清理项目(Cmd+Shift+K)

    当出现(lldb)提示时,键入“bt”。堆栈跟踪可能很有用。另外,launchCamera:方法的代码可能会有用。(iAction)launchCamera:(id)发送方是否有实现?launchCamera:中没有代码,它现在是一个空函数。您可以对此进行扩展吗?我觉得这就是我的错误所在。实例化控制器是要初始化视图并使用它的视图控制器。当你说“referencedView插座必须绑定到你需要的实际视图”时,你的确切意思是什么?是的,你是对的。您可以在右侧属性窗口上设置视图控制器。同样在outlet下,引用的视图属性也应该被控件单击并拖动到视图中。只是给了它一个镜头,它就成功了。无论我将来何时提出基于xib的观点,了解这一点都非常有用。非常感谢。