我对客观c和iOS开发很新,我觉得有时候我会把头撞到砖墙上......
我正在以编程方式将图像作为菜单按钮添加到服务器的屏幕上。我有一个处理该按钮的类。这是.h文件:
#import <Foundation/Foundation.h>
@interface MenuButton : NSObject <UIGestureRecognizerDelegate>
@property UIImageView * menuButton;
- (id) initWithButton: (UIImageView *) mb;
- (void) onTapMenuButton;
@end
这是.m文件:
#import "MenuButton.h"
@implementation MenuButton
- (id) initWithButton: (UIImageView *) mb {
self = [super init];
if(self) {
self.menuButton = mb;
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTapMenuButton)];
tap.numberOfTapsRequired = 1;
[self.menuButton addGestureRecognizer:tap];
tap.delegate = self;
}
return self;
}
- (void) onTapMenuButton {
NSLog(@"SUCCESS!");
}
@end
每当我点击按钮,程序就会停止运行。在输出窗口中,我只能看到一些文字:“(lldb)”,编辑器向我显示主要功能,突出显示我在那里的唯一一条线,我根本没有碰到过(我自动创建的那条线)启动单视图应用程序。)
我做错了什么?
答案 0 :(得分:1)
我怀疑您正在创建一个MenuButton实例,该实例会设置此点击手势识别器,但您不会保留MenuButton实例并且它会被取消分配。结果:点击手势识别正在对不再存在的对象调用onTapMenuButton
。
你如何保持MenuButton对象?