我需要你的帮助。我编写了自己的自定义NSOperation类,名为GetNewsOperation。我称之为:
GetNewsOperation *getNewsOperation = [[GetNewsOperation alloc] initWithLocalNewsCategories:self];
[loadNewsOperationQueue addOperation:getNewsOperation];
[getNewsOperation release];
在GetNewsOperation类中,我实现了 init 方法进行初始化, main 方法用于执行操作并将数据返回给主线程。
主要方法如下:
- (void)main {
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
AppSettingsController *sharedAppSettingsController = [AppSettingsController sharedAppSettingsController];
if( [type isEqualToString:@"getCategory"] ) {
NSMutableArray *parsedData = [[NSMutableArray alloc] initWithArray:[sharedAppSettingsController getLocalNewsCategories]];
[newsViewController performSelectorOnMainThread:@selector(loadDataResponse:) withObject:[NSArray arrayWithObjects:parsedData, nil] waitUntilDone:NO];
[parsedData release]; parsedData = nil;
}
[pool release];
}
一切正常,但我有一个小问题。调用此操作时,应用程序不会在设备方向更改时旋转。操作完成后会发生变化。
据我所知,这个操作肯定在新线程中运行(不在main中)因为应用程序中的所有其他元素都是活动的(不是冻结的)。但我只有方向问题。如果应用程序仅在此操作发生时不旋转,那么该应用程序看起来很糟糕......
我该如何解决这个问题?
谢谢!
答案 0 :(得分:0)
实际上它的工作方式与预测相似。我在阻止应用程序的主线程上做了其他事情。