xibで作ったカスタムダイアログとイベントハンドラを紐付ける


[iOSでのカスタムダイアログの表示](https://ja.stackoverflow.com/questions/7007/ios%E3%81%A7%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E3%81%AE%E8%A1%A8%E7%A4%BA)

上記のベストアンサーの方法でダイアログを表示させることはできたのですが、作成した`xib`のボタンをコードと紐付けて実行し、ボタンをタップするとアプリが動かなくなってしまいました。エラーは何も出ていません。この場合何が原因となっているのでしょうか？すみません、どなたか分かる方がいればご教授いただきたいです。よろしくお願いします。

postDialog.h

[code]

    @interface PostDialog : UIView
    
    +(id)loadFromNib;
    
    - (IBAction)post:(id)sender;
    - (IBAction)cancel:(id)sender;
    
    @end
    
[/code]

postDialog.m

[code]

    @interface PostDialog ()
    
    @end
    
    @implementation PostDialog
    
    +(id)loadFromNib {
        return [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:nil options:nil] firstObject];
    }
    
    - (IBAction)post:(id)sender {
        NSLog(@"post");
    }
    
    - (IBAction)cancel:(id)sender {
        NSLog(@"cancel");
    }
    
    @end
    
[/code]

------追記------

コンソールにログを出力しました。

[code]

    * thread #1: tid = 0x3b6f, 0x0000000198c23bdc libobjc.A.dylib`objc_msgSend + 28, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x10)
        frame #0: 0x0000000198c23bdc libobjc.A.dylib`objc_msgSend + 28
        frame #1: 0x000000018cca9418 UIKit`-[UIApplication sendAction:to:from:forEvent:] + 96
        frame #2: 0x000000018cc9252c UIKit`-[UIControl _sendActionsForEvents:withEvent:] + 612
        frame #3: 0x000000018cca8db4 UIKit`-[UIControl touchesEnded:withEvent:] + 592
        frame #4: 0x000000018cca8a40 UIKit`-[UIWindow _sendTouchesForEvent:] + 700
        frame #5: 0x000000018cca1f94 UIKit`-[UIWindow sendEvent:] + 684
        frame #6: 0x000000018cc7568c UIKit`-[UIApplication sendEvent:] + 264
        frame #7: 0x000000018cf1460c UIKit`_UIApplicationHandleEventFromQueueEvent + 14992
        frame #8: 0x000000018cc73bf4 UIKit`_UIApplicationHandleEventQueue + 1616
        frame #9: 0x000000018847e9ec CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
        frame #10: 0x000000018847dc90 CoreFoundation`__CFRunLoopDoSources0 + 264
        frame #11: 0x000000018847bd40 CoreFoundation`__CFRunLoopRun + 712
        frame #12: 0x00000001883a90a4 CoreFoundation`CFRunLoopRunSpecific + 396
        frame #13: 0x00000001915435a4 GraphicsServices`GSEventRunModal + 168
        frame #14: 0x000000018ccdaaa4 UIKit`UIApplicationMain + 1488
      * frame #15: 0x0000000100032db0 PostDialog`main(argc=1, argv=0x000000016fdd3a60) + 116 at main.m:14
        frame #16: 0x000000019927ea08 libdyld.dylib`start + 4
    
[/code]




`xib`ファイルを選択した状態で、Xcodeの **コネクションインスペクタ** を選択してみてください（一番右のインスペクタです）。

一度作成したが名前を変えた（あるいは削除した）等で存在しなくなった  
`IBAction`が紐付いていないでしょうか？

----- 追記 -----  
**Sent Events** というのがありませんか？  
添付画像の例だと Closeボタンに IBActionが2つ紐付いていますが、.m
に`touchtouch`というメソッドが実装されていません（これでボタンを押下すると main で `Thread1:signal
SIGABRT`になります）。

ちなみに

> maniの「return UIApplicationMain(argc, argv, nil,  
>  NSStringFromClass([AppDelegate class]));」に緑線で「Thread 1:  
>  EXC_BAD_ACCESS(code=1, address=0x01)」というメッセージが出ています。

これはアプリがクラッシュして止まっている状態なので、エラーは出ていますね。

![画像の説明をここに入力](https://i.stack.imgur.com/AEzQy.png)




`xib`ファイルを選択した状態で、Xcodeの **コネクションインスペクタ** を選択してみてください（一番右のインスペクタです）。

一度作成したが名前を変えた（あるいは削除した）等で存在しなくなった  
`IBAction`が紐付いていないでしょうか？

----- 追記 -----  
**Sent Events** というのがありませんか？  
添付画像の例だと Closeボタンに IBActionが2つ紐付いていますが、.m
に`touchtouch`というメソッドが実装されていません（これでボタンを押下すると main で `Thread1:signal
SIGABRT`になります）。

ちなみに

> maniの「return UIApplicationMain(argc, argv, nil,  
>  NSStringFromClass([AppDelegate class]));」に緑線で「Thread 1:  
>  EXC_BAD_ACCESS(code=1, address=0x01)」というメッセージが出ています。

これはアプリがクラッシュして止まっている状態なので、エラーは出ていますね。

![画像の説明をここに入力](https://i.stack.imgur.com/AEzQy.png)

