导致EXC_BAD_ACCESS的按钮

时间:2011-07-10 02:21:29

标签: iphone objective-c exc-bad-access xib

我已经搜索了SO以获得对我的问题有意义的答案,所以如果这是一个简单的问题,不要恨我!

我在窗口中添加了两个视图:

self.appView = [[AppViewController alloc] initWithNibName:nil bundle:nil] ;
self.buttonBar = [[ButtonBar alloc] initWithNibName:nil bundle:nil];

[window insertSubview:[self.appView view] belowSubview:[self.launchScreen view]];
[window insertSubview:[self.buttonBar view] belowSubview:[self.launchScreen view]];

删除self.launchScreen之前。

当我向appView添加元素(它是一个uitableviewcontroller)时,它们按预期工作,但是当我向buttonBar添加一个按钮(在XIB中或通过代码)时,单击它们会导致EXC_BAD_ACCESS。

这是buttonBar的init代码(添加一个按钮):

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {

        self.settingsButton = [[UIButton alloc] initWithFrame:CGRectMake(0,10,40,28)];
        [self.settingsButton addTarget:self action:@selector(settings:) forControlEvents:UIControlEventTouchUpInside];    

        UIImage *btnImage = [UIImage imageNamed:@"play.png"];
        [self.settingsButton setImage:btnImage forState:UIControlStateNormal];
        [btnImage release];

        [self.view addSubview:self.settingsButton];

    }
    return self;
}

我的问题分为两部分,1)提供什么?!我一直这么做太久了,2)我怎么调试这个东西?当我确信XCODE的调试工具可以帮助我跟踪这些东西时,我讨厌来SO去询问n00b问题......

2 个答案:

答案 0 :(得分:1)

改为使用@selector(settings)

答案 1 :(得分:0)

我不确定这是不是问题,但我认为你不需要在这一行的末尾“保留”

self.settingsButton = [[[UIButton alloc] initWithFrame:CGRectMake(0,10,40,28)] retain];

我假设settingsButton已经在您的头文件中,并带有@property(保留),并且您已在.m文件中合成它。

在dealloc方法中释放它。