Простое приложение UIButton - ошибка в приложении iPhone - PullRequest
1 голос
/ 16 января 2012

Приложение для моего iPhone довольно простое, но оно выдает ошибку.Мой представитель приложения открывает этот контроллер вида:

#import "Launch.h"

@implementation Launch

- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad {
    [super viewDidLoad];

    self.view.backgroundColor = [UIColor redColor];

    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    button.frame = CGRectMake(100, 100, 100, 100);
    [button setTitle:@"Hello" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
}

-(void)buttonPressed {
    NSLog(@"Button Pressed!");
}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo {
    //image.image = img;
    [[picker parentViewController] dismissModalViewControllerAnimated:YES];
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end

, который представляет собой просто красный экран с кнопкой.Когда я нажимаю кнопку, приложение выдает ошибку без сообщения об ошибке.Почему?

- это мой метод main.m, и когда программа выдает ошибку, она указывает на строку «return» и указывает на EXEC_BAD_ACCESS в потоке.

#import <UIKit/UIKit.h>

#import "testAppDelegate.h"

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([testAppDelegate class]));
    }
}

Ответы [ 2 ]

1 голос
/ 16 января 2012

Целевой класс освобожден, его необходимо сохранить.

Из документов Apple:

addTarget:action:forControlEvents:

Когда вы вызываете этот метод, цель не сохраняется.

Вы должны убедиться, что экземпляр класса сохранен.

1 голос
/ 16 января 2012

Измените его на:

@selector(buttonPressed:) //add the :

и используйте это:

-(IBAction)buttonPressed:(id)sender;

Кнопка запрашивает действие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...