2011-10-28 2 views
0

У меня есть простой UIViewControler, и когда я вызываю метод [self performSelectorInBackground: @selector (load) withObject: nil]; это вызывает и EXC_BAD_ACCESS@autoreleasepool 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

+0

Какова трассировка стека для аварии? – kperryua

ответ

7

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

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

Смежные вопросы