我創建一個UITapGesture,其目標不是當前對象。之後,當點擊時,應用程序崩潰。未保留UITapGesture目標(使用ARC)
視圖控制器的.h:
@interface ViewController : UIViewController
{
IBOutlet UIImageView *iv;
}
@end
視圖控制器的.c:
#import "ViewController.h"
#import "Target.h"
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
Target *t = [[Target alloc] init];
UITapGestureRecognizer *tgr = [[UITapGestureRecognizer alloc] initWithTarget:t action:@selector(gestureDone:)];
[iv addGestureRecognizer:tgr];
[iv setUserInteractionEnabled:YES];
}
@end
Target.h:
@interface Target : NSObject
- (void)gestureDone:(UIGestureRecognizer *)gr;
@end
Target.c:
@implementation Target
- (void)gestureDone:(UIGestureRecognizer *)gr
{
NSLog(@"Gesture!");
}
@end
(我的XIB文件只包含一個圖像...) 當點擊圖像時,它崩潰。例如,如果我添加一個實例變量Target * t到我的視圖控制器(並刪除viewDidLoad中的本地聲明),則不會出現問題。當不這樣做時,我重寫了Target中的dealloc,在那裏放了一個NSLog,並且看到只要viewDidLoad完成執行,Target對象就是fred。
我做錯了什麼,還是有些問題? (通常我不會遇到這個問題,因爲我使用initWithTarget:self ...)。
請問您可以添加崩潰日誌嗎? – 2013-02-13 00:05:10