В этом случае вы, вероятно, захотите использовать шаблон делегата. В файле .h вашего класса создателя фильма:
@protocol MovieMakerDelegate;
@interface MovieMaker : NSObject
{
id<MovieMakerDelegate> delegate;
...
}
@property (nonatomic, assign) id<MovieMakerDelegate> delegate;
...
@end
@protocol MovieMakerDelegate <NSObject>
- (void)movieMaker:(MovieMaker *)maker didSomething:(id)result;
@end
... и в .m:
@implementation MovieMaker
@synthesize delegate;
...
- (void)makeMovie
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
...
[self performSelectorOnMainThread:@selector(notifyDelegateOfDoingSomethingWithObject:) withObject:someObject waitUntilDone:YES];
[pool release];
}
- (void)notifyDelegateOfDoingSomethingWithObject:(id)someObject
{
[self.delegate movieMaker:self didSomething:someObject];
}
...
@end
Затем в заголовке вашего контроллера объявите, что он поддерживает протокол MovieMakerDelegate, например:
@interface MyController : Whatever <MovieMakerDelegate>
и в вашем .m, прежде чем позвонить на -detachNewThreadSelector:etc:
, позвоните movieMaker.delegate = self;
. Реализуйте метод -movieMaker:didSomething:
на вашем контроллере, и все готово.