2012-03-18 48 views
0

如果我嘗試將操作發送給自定義對象,我會得到一個EXC_BAD_ACCESS。我使用UIStoryboard進行測試,使用和不使用ARC。真奇怪。該對象似乎被正確實例化。 - (id)init被調用, - (void)awakeFromNib也是。在test-xib中,我添加了一個對象並將其與自定義類連接起來。我可以連接IBOutlets,沒有任何問題。只有行動崩潰。有任何想法嗎?向自定義對象發送操作會導致應用程序在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 2012-03-18 15:03:24

+0

正如你已經發現你自己,問題在於對象的初始化和使用,而不是IBAction代碼。你也許應該發佈相關的代碼來回答這個問題。 – Mundi 2012-03-18 15:33:38

+0

@fragglechen,對,局部變量將被釋放或泄漏,並且引用將是無效的。 – 2012-03-18 16:07:23

回答

0

你參照自定義對象是通過的時間,即動作火災懸空指針。場景中的頂級對象是自動釋放的,所以如果你想保持時間的話,你必須保留它們。