我已經用NSOperation和NSOperationQueue構建了一個測試項目。 只有一個文本框:@property (weak) IBOutlet NSTextField *textbox;
NSOperation:完成任務後更新UI
在此進行背景:
- (void)main
{
NSURL *url = [NSURL URLWithString:@"http://google.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request startSynchronous];
NSError *error = [request error];
if (!error) {
NSString *response = [request responseString];
NSLog(@"MainThread: %@", ([NSThread isMainThread] ? @"YES" : @"NO"));
[[AppDelegate sharedManager] performSelectorOnMainThread:@selector(pageLoaded:)
withObject:response
waitUntilDone:NO];
}
和選擇被稱爲主線程:
- (void)pageLoaded:(NSString*)document
{
[textbox setStringValue:document]; // does nothing
NSLog(@"Textbox: %@", textbox); // returns nil
}
爲什麼文本框返回nil?
您是否連接IB的插座? –
是的,它已連接。即使我調用[textbox setStringValue:@「Test」];從applicationDidFinishLaunching方法中,文本框值發生更改。 – EduardMarcinco