2013-05-18 2 views
0

У меня есть RootViewController, где я создаю экземпляр MainViewDownload и метод вызова этого экземпляра.Как определить, когда все методы закончены?

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

Как узнать, когда loadMainViewImages закончен? Я вызываю loadMainViewImages только из RootViewController, но loadMainViewImages вызывает другой метод в классе MainViewDownload (например, method2), и этот метод2 снова вызывает метод3. Итак, есть ли способ узнать, когда loadMainViewImages закончен (фактически, когда method3 завершен с момента его последнего вызова).

ответ

1

Если вы не используете многопоточность, то есть запускаете метод, который запускается в отдельном потоке от loadMainViewImages, тогда методы будут выполняться последовательно. Поэтому, как только возвращается loadMainViewImages, вы можете быть уверены, что все «в нем» выполнено. Так работают методы.

EDIT для лучшего форматирования комментариев:

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 

Убедитесь, чтобы установить делегат зрения загрузки в контроллер представления корня.

+0

Есть ли способ блокировки перед загрузкойMainViewImages? – user1832330

+0

Что это значит? Просто добавьте что-то к концу. Но это будет таким же, как если бы вы поместили этот код после 'loadMainViewImages' в свой корневой контроллер. – DrummerB

+0

Итак, мне нужно [загрузить loadMainViewImages], и когда загрузка выполняется, затем, например, удалите экран LoadView. Но если я просто добавлю эту строку под нее, не дождаться завершения loadMainViewImages. – user1832330

Смежные вопросы