2012-03-18 11 views
0

カスタムオブジェクトにアクションを送信しようとすると、EXC_BAD_ACCESSが表示されます。私は、UIStoryboardの有無にかかわらず、ARCありとなしでテストしました。本当に奇妙です。オブジェクトは正しくインスタンス化されているようです。 - (id)initが呼び出され、 - (void)awakeFromNibも呼び出されます。 test-xibでは、オブジェクトを追加し、それをカスタムクラスで配線しました。私はIBOutletを問題なく配線することができます。アクションだけがクラッシュしています。何か案は?カスタムオブジェクトにアクションを送信すると、ios5.1でアプリケーションがクラッシュするxcode 4.3.1

SimpleObj.m

#import <UIKit/UIKit.h> 

@interface SimpleObj : NSObject 
-(IBAction)simpleTest:(id)sender; 
@end 

SimpleObj.h

#import "SimpleObj.h" 
@implementation SimpleObj 
-(IBAction)simpleTest:(id)sender{ 
    NSLog(@"Test"); 
} 
@end 
+0

NSZombieEnabledでテストすると、カスタムオブジェクトが既にリリースされていることがわかります。したがって、カスタムオブジェクトはインスタンス化され、すぐに解放されます。このカスタムオブジェクトを保持する唯一の方法は、ファイル所有者を参照することです。 – fragglechen

+0

自分で見つけたので、問題はIBActionコードではなく、オブジェクトの初期化と使用にあります。この質問に答えるために関連するコードを投稿するべきでしょう。 – Mundi

+0

@fragglechen、右、ローカル変数は解放されるか漏れされ、参照は無効になります。 –

答えて

0

カスタムオブジェクトへのあなたの参照は、そのアクションが発火時間によってダングリングポインタです。シーン内のトップレベルのオブジェクトはオートレリゼーションされていますので、それらを保持しておく必要があります。

関連する問題