从另一个类调用方法并返回值

时间:2014-01-13 16:46:16

标签: ios objective-c

我有三个UIViewController在需要时调用另一个类中的方法。

NSObject的第四个Class子类,我将其称为CheckController,它与服务器上的数据库建立连接,这样做需要几秒钟。

我有两个问题要问:

- 第一次:现在从服务器回到我的阵列,使用几乎让我感到尴尬的方法(对我来说代码不好), 所以我需要知道如何调用此CheckController并返回发起呼叫的ViewController中的值。

- SECOND :我如何知道CheckController,从哪个UIViewController调用该方法?

这是CheckController的代码:

 -(void)connectionWithString:(NSString *)string {

   //connection with server - work well

  }

  ...

  -(void)connectionDidFinishLoading:(NSURLConnection *)connection {

     ...

    [self returnArray:myObject];

  }

  -(void)returnArray:(NSMutableArray *)arrayReturn {
   //in this method i set the BOOL done to YES, but i believe that is it possible to
   //send directly this arrayReturn to ViewController that invoked this method

   done = YES;
   NSLog(@"arrayReturn = %@", arrayReturn);
  }

事先感谢您的帮助,并告诉我是否有不明确的事情

1 个答案:

答案 0 :(得分:1)

正如您已经提到的,您的Class是NSObject的子类,这很好。但是如果CheckController收到一些数据,你应该提供一个调用委托的协议。所以在你的CheckController.h中

@protocol CheckControllerDelegate <NSObject>
@required
- (void)receivedArray:(NSArray*)data
@end

@property (nonatomic, weak) id <CheckControllerDelegate> delegate;

在ViewController中:

[self.CheckController setDelegate:self];

CheckController.m:

 -(void)connectionDidFinishLoading:(NSURLConnection *)connection {
     [_delegate receivedArray:myObject];
 }

为了获得最佳实践,您的协议还应该有一个方法,如果发生错误就会调用该方法。