如何确定所有方法何时完成?

时间:2013-05-18 13:59:09

标签: objective-c methods method-call

我有RootViewController,我在其中创建我的MainViewDownload实例并调用该实例的方法。

MainViewDownload *download = [[MainViewDownload alloc] init];
[download loadMainViewImages];

我如何知道loadMainViewImages何时完成?我只从RootViewController调用loadMainViewImages,但loadMainViewImages调用MainViewDownload类中的另一个方法(比如说method2),然后该方法再次调用method3。那么,有没有办法知道loadMainViewImages何时完成(实际上当method3自上次调用以来完成时)。

1 个答案:

答案 0 :(得分:1)

如果您不是多线程,即启动一个在loadMainViewImages的单独线程上运行的方法,那么这些方法将按顺序执行。因此,一旦loadMainViewImages返回,您就可以确定“其中”的所有内容都已执行。这就是方法的工作方式。

编辑以更好地格式化评论:

MainViewDownload.h

@protocol MainViewDownloadDelegate;

@interface MainViewDownload
@property (nonatomic, weak) NSObject<MainViewDownloadDelegate> *delegate;
@end

@protocol MainViewDownloadDelegate
- (void)downloadDidFinish:(MainViewDownload *)download;
@end

MainViewDownload.m

@implementation MainViewDownload

- (void)someMethodThatDownloadsStuff_OrIsCalledAfterTheDownload {
    ...
    if ([self.delegate respondsToSelector:@selector(downloadDidFinish:)]) {
        [self.delegate downloadDidFinish:self];
    }
}

@end

RootViewController.h

@interface RootViewController <MainViewDownloadDelegate>
...
@end

RootViewController.m

@implementation
...
- (void)downloadDidFinish:(MainViewDownload *)download {
    // hide the download view here.
}
@end

确保将下载视图的委托设置为根视图控制器。