@autoreleasepool EXC_BAD_ACCESS - PullRequest
       10

@autoreleasepool EXC_BAD_ACCESS

0 голосов
/ 28 октября 2011

У меня есть простой UIViewControler и когда я вызываю метод [self executeSelectorInBackground: @selector (load) withObject: nil]; это вызывает и EXC_BAD_ACCESS

Вот UIViewControler.m и UIViewControler.h

#import <UIKit/UIKit.h>
@interface ViewController : UIViewController

@property (strong, nonatomic) UITextView *myTextView;

@end



#import "ViewController.h"

@implementation ViewController

@synthesize myTextView;

- (id)init {
    self = [super init];
    if (self) {
        myTextView = [[UITextView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        [[self view] addSubview:myTextView];
        [self performSelectorInBackground:@selector(load) withObject:nil];
    }
    return self;
}

- (void) load {
    @autoreleasepool {
        [myTextView setText:@"LOADING ..."];
        //DO SOMETHING ....
    }
}

@end

PS:.

В проекте используется Objective-C ARC

1 Ответ

7 голосов
/ 28 октября 2011

Объекты UIKit не являются поточно-ориентированными: вы должны иметь к ним доступ только в основном потоке. Строка [myTextView setText:@"LOADING ..."]; не может быть безопасно выполнена в фоновом потоке.

Это может быть, а может и не быть причиной того, что вы получаете ошибку EXC_BAD_ACCESS, но, не видя остальную часть метода load, я не могу узнать, что еще может быть не так.

...