Невозможно обработать действие кнопки из-за «Программный полученный сигнал:« EXC_BAD_ACCESS ». - PullRequest
0 голосов
/ 16 декабря 2010

Пытался разобраться с этой проблемой уже два дня.Мое приложение имеет текстовое поле и кнопку.когда текстовое поле пусто, нажатие кнопки обеспечивает стабильную работу, и после нажатия кнопки я получаю предупреждение.Однако если я что-то набираю в текстовом поле, то при нажатии на кнопку - происходит сбой.Все, что я вижу в консоли отладки: «Программа получила сигнал:« EXC_BAD_ACCESS ».»Там нет детализации стека или что-нибудь.Мой соответствующий код: заголовочный файл:

#import <UIKit/UIKit.h>

@interface SpyTextViewController : UIViewController {

    int sliderSpeed;
    IBOutlet    UITextField     *textInput;
}

@property (nonatomic, retain) IBOutlet UITextField *textInput;




- (IBAction)sliderChanged:(id)sender;//speed of text show changed

- (IBAction)textFieldDoneEditing:(id)sender;//dor 'DONE' on keyboard
- (IBAction)backgroundTap:(id)sender;//for handling tapping on background

- (IBAction)textEmButtonPressed:(id)sender;

@end

------ .m файл:

#import "SpyTextViewController.h"
#import "txtViewController.h"

@implementation SpyTextViewController
@synthesize textInput;






- (IBAction)sliderChanged:(id)sender
{
    UISlider *slider = (UISlider *)sender;
    sliderSpeed =  (int)(slider.value + 0.5f);//setting the speed determinned by the usr in slider
}

- (IBAction)textFieldDoneEditing:(id)sender
{
    [sender resignFirstResponder];
    NSLog(@"our text input  is %@", textInput.text);
}

- (IBAction)backgroundTap:(id)sender
{
    [textInput resignFirstResponder]; 
}   

- (IBAction)textEmButtonPressed:(id)sender
{
    NSLog(@"our text input length is %@", [textInput.text length]);

    /*
     if ([textInput.text length])
     {
     NSLog(@" inside the tvc init ");
     //create the sub MVC 
     txtViewController *tvc = [[txtViewController alloc] init];
     tvc.scrollSpeed = sliderSpeed;
     tvc.scrollTxt = textInput.text;
     [self.navigationController pushViewController:tvc animated:YES];
     [tvc release];
     //run text using speed;
     }
     else */
    {
        //tell 'em to input text with some pop-up
        NSString *msg = nil;
        msg = @"Write text to transmit";
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Forgot something?"
                                                        message:msg
                                                       delegate:self
                                              cancelButtonTitle:@"Back" 
                                              otherButtonTitles:nil];

        [alert show]; 
        [alert release]; 
        [msg release];
    }
}

- (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.
}

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


- (void)dealloc {
    [textInput release];
    [super dealloc];
}

@end

Некоторые подробности о файле .Xib: действиеметод прикрепляется к владельцу файла через «подкрашивание изнутри».к текстовому полю также подключен выход (я также напечатал содержимое текста, он работает нормально). Я также изменил идентификатор класса представления на UICpntrol, чтобы я мог поддерживать событие касания представления при вводе txt втекстовое поле для выхода из клавиатуры ...

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 24 февраля 2011

msg строка постоянна, и ее освобождение могло вызвать исключение.

0 голосов
/ 16 декабря 2010

Запуск под отладчиком («Сборка и отладка»).

Окно отладчика (cmd-shift-Y) покажет трассировку того, где возникла проблема, и позволит вам изучить переменные в этой точке.

...