Я только что написал приложение для iOS, чтобы протестировать UIAlertView.Когда я его запустил, UIAlertView, который только появился, с экраном сначала потемнел без UIAlertView, а спустя «долгое время» появился UIAlertView.Это происходит как на симуляторе, так и на iPhone (IOS 4.2).Я не знаю почему, пожалуйста, помогите мне, спасибо.
Описание: (Вы также можете загрузить Project ЗДЕСЬ )
Это очень простое приложение на основе View с 3 классами: AppDelgate ViewControler и TestOperation, которые реализуют NSOperation;AppDelegate был только тем, который был создан XCode;TestOperation.h:
#import <Foundation/Foundation.h>
@protocol TestOperationDelegate
- (void)didFinishTestOperaion;
@end
@interface TestOperation : NSOperation {
id <TestOperationDelegate> delegate;
}
@property (nonatomic, assign) id <TestOperationDelegate> delegate;
@end
TestOperation.m
#import "TestOperation.h"
@implementation TestOperation
@synthesize delegate;
- (void)main {
[delegate didFinishTestOperaion];
}
@end
ViewContoller.m
- (void)viewDidLoad {
[super viewDidLoad];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
TestOperation *testOperation = [[TestOperation alloc] init];
testOperation.delegate = self;
[queue addOperation:testOperation];
[testOperation release];
}
- (void)didFinishTestOperaion {
NSLog(@"start uialertview");
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Oops!" message:@"Here's the UIAlertView"
delegate:self cancelButtonTitle:@"Confirm" otherButtonTitles:nil];
[alert show];
[alert release];
}
// Решено!!Используйте executeSelectorOnMainThread, чтобы пользовательский интерфейс работал в главном потоке