Исключение EXC_BAD_ACCESS - PullRequest
       2

Исключение EXC_BAD_ACCESS

2 голосов
/ 25 апреля 2011

У меня есть контроллер представления, содержащий четыре кнопки. Нажатие на каждую кнопку приводит вас к новому контроллеру представления, содержащему веб-представление. Все работает нормально, кроме тех случаев, когда кнопка нажата.назад приложение закрывается ... в режиме отладки я получил исключение dis EXC_BAD_ACCESS ... ниже приведен код ...

-(IBAction)Button1
{

WebViewFaceBook *newEnterNameController4 = [[WebViewFaceBookalloc]initWithNibName:@"WebViewFaceBook" bundle:[NSBundle mainBundle]];

    [[self navigationController] pushViewController:newEnterNameController4 animated:YES];

[newEnterNameController4 release];

}


- (void)viewDidLoad {
    [super viewDidLoad];

    //[UIApplication sharedApplication].networkActivityIndicatorVisible=YES;
    urlAddress2 = @"http://www.facebook.com/livingwaterscf";

    url2 = [NSURL URLWithString:urlAddress2];

    requestObj2 = [NSURLRequest requestWithURL:url2];

    [webViewFaceBook loadRequest:requestObj2];
}

Ответы [ 3 ]

4 голосов
/ 25 апреля 2011

Вы выпускаете веб-просмотр в dealloc?Используете ли вы какие-либо делегированные методы веб-просмотра?

Оформление NSZombieEnabled для вашего активного исполняемого файла для просмотра дополнительной информации о неправильном доступе.

Это назначение не будет работать без объявления ivars / properties:

urlAddress2 = @"http://www.facebook.com/livingwaterscf";

url2 = [NSURL URLWithString:urlAddress2];

requestObj2 = [NSURLRequest requestWithURL:url2];

Не могли бы вы показать нам их определение в вашем заголовочном файле?

Редактировать

Измените ваше объявление urlAddress2, url2 и requestObj2 на сохраненноесвойства и установите их с помощью self.urlAddress2 = xxx, затем вы можете освободить их в dealloc.Методы класса, а также @"http://www.facebook.com/livingwaterscf" возвращают автоматически освобожденные экземпляры.Если вы хотите владеть ими, вы должны сохранить их, и только тогда вы должны освободить их.

Если вы не хотите владеть ими, и в этом случае я не думаю, что они вам нужны где-то еще, тогданачиная загрузку содержимого веб-просмотра, просто не выпускайте их в dealloc!

1 голос
/ 25 апреля 2011

Вы пытаетесь получить доступ к тому, что было освобождено.

Включить NSZombie , чтобы узнать, где.

0 голосов
/ 25 апреля 2011

Возможно, вы используете url2 в методе dealloc в вашем WebViewFaceBook контроллере.

requestObj2, url2, urlAddress2 уже автоматически выпущен.Вы не должны выпускать их в dealloc

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