ViewController を TCP クラスのオブザーバーとして設定できます。これは、Obj-C でのオブザーバー パターンの実装を説明するリンクです。(私が使っているものと非常に似ていますが、良い書き方です。)
http://www.a-coding.com/2010/10/observer-pattern-in-objective-c.html
私は通常、永続化レイヤーもインターフェースから分離するのが好きです。オブザーバーまたは KVO を使用して、何かが変更されたことをビジネス ロジックとビュー コントローラーに通知します。
必要に応じて、提供されている通知センターから情報を送信することもできます...
https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsnotificationcenter_Class/Reference/Reference.html
基本的なコード例:
@implementation ExampleViewController
//...
- (void)viewDidLoad
{
[super viewDidLoad:animated];
[TCPClass subscribeObserver:self];
}
- (void)viewDidUnload
{
[super viewDidUnload:animated];
[TCPClass unsubscribeObserver:self];
}
- (void)notifySuccess:(NSString*)input
{
//Do whatever I needed to do on success
}
//...
@end
@implementation TCPClass
//...
//Call this function when your TCP class gets its callback saying its done
- (void)notifySuccess:(NSString*)input
{
for( id<Observer> observer in [NSMutableArray arrayWithArray:observerList] )
{
[(NSObject*)observer performSelectorOnMainThread:@selector(notifySuccess:) withObject:input waitUntilDone:YES];
}
}
//maintain a list of classes that observe this one
- (void)subscribeObserver:(id<Observer>)input {
@synchronized(observerList)
{
if ([observerList indexOfObject:input] == NSNotFound) {
[observerList addObject:input];
}
}
}
- (void)unsubscribeObserver:(id<Observer>)input {
@synchronized(observerList)
{
[observerList removeObject:input];
}
}
//...
@end
//Observer.h
//all observers must inherit this interface
@protocol Observer
- (void)notifySuccess:(NSString*)input;
@end
それが役立つことを願っています!