很少有事情可以做。一個是對你要調用其方法的對象有一個弱引用。在這種情況下,視圖控制器就是對象。申報MainViewController
的assign
-able屬性在WiFi類(假設這是類)和初始化期間將其設置爲視圖控制器。由於您有對視圖控制器的引用,因此可以在委託方法中調用所需的方法。
另一種方法是使用Blocks
。塊的定義可以是 -
typedef void (^UpdateHandler)(void);
...
@interface WiFiConnection:NSObject <...> {
...
UpdateHandler updateHandler;
}
...
- (void)setUpdateHandler:(UpdateHandler)handler;
@end
@implemention WiFiConnection
...
- (void)setUpdateHandler:(UpdateHandler)handler {
updateHandler = handler;
}
...
- (void)delegateMethodFromWhichYouWantToInvoke {
...
if (updateHandler != NULL) {
dispatch_async(dispatch_get_main_queue(), updateHandler);
}
}
...
@end
現在,您可以在初始化過程中通過更新塊,
WiFiConnection *connection = [[WiFiConnection alloc] init];
...
__block MainViewController *controller = self;
[connection setUpdateHandler:^{
[controller welcomeMessage];
}];
有可能是很多在那裏。讓我知道如果它仍然不清楚。閱讀GCD。在我看來,這是一個非常強大的工具。
可以肯定的是,wifi class實例充當所有web請求的委託。對?這個實例在哪裏初始化? – 2011-05-21 09:43:36
wifi連接類中的所有東西 – Christina 2011-05-21 10:49:26
剛剛調用初始化方法,當我的mainViewController正在加載... – Christina 2011-05-21 10:50:33