【问题标题】:ios - Passing on data to another method - same viewControllerios - 将数据传递给另一个方法 - 相同的 viewController
【发布时间】:2013-01-08 20:53:42
【问题描述】:

请以这段代码为例:

-(void)generateConnection
{

    NSString *urlString = @"";

    NSURL *url = [NSURL URLWithString:urlString];
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL: url];
    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

    NSLog(@"%@", connection);
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    NSString *partialData = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    [_jsonContentForText appendString:partialData];

    NSLog(@"%@", partialData);
}

真的是因为不知道它叫什么,但是在搜索了很多之后,我无法弄清楚这个过程叫什么。

我需要知道-(void)connection: 是如何从之前的方法中得到它需要的信息的。我不知道这是否称为将方法传递给另一个方法,但我需要创建另一个,所以我需要知道我可以在哪里学习。

请不要告诉我以下内容:您需要阅读有关 Objective-c 和一般内容的内容,因为这些答案并未涵盖我的特定需求。

我不介意阅读它,只要我知道我正在阅读的内容就可以解释这一点。但是,如果在任何善意的心中很容易解释,我不会拒绝那个提议:-)

【问题讨论】:

  • 当您创建连接对象时,您将委托设置为 self。 “[[NSURLConnection alloc] initWithRequest:request delegate:self];”。这就是告诉系统,对于所有回调方法,使用当前对象并调用当前对象中的方法。 self 表示当前对象。不仅是这个方法,连接对象的所有委托方法都在当前对象上调用。请阅读 ios 中的 Delegates,您就会知道发生了什么。
  • 因此,我只能为每个 ViewController 创建一个 NSURLConnection?只要我明白就可以了-我的意思是我理解它的方式是我无法区分以下方法,因为它们基于委托-即自我。

标签: objective-c ios methods pass-by-reference pass-by-value


【解决方案1】:

您需要阅读委托和协议。当您创建NSURLConnection 并将self 设置为委托时,您的新NSURLConnection 对象被告知查询self(创建它的对象)以执行诸如查找是否支持身份验证或要执行什么操作等操作当它收到一些数据时做。特别是对于NSURLConnectionDelegate,如果您的委托实现了NSURLConnectionDelegate Protocol 中定义的方法,它们将被调用。

一些关于委托和协议的好资料是:

【讨论】:

  • 谢谢 - 我知道涉及阅读,所以我会马上做的:-)
  • 关于支持多连接的问题——是的,完全有可能。精心设计的Protocols 支持将调用对象作为参数传递给委托方法。您可以使用它来确定哪个特定连接(假设您有一个数组)正在拨打电话。祝你好运!
猜你喜欢
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-09
  • 1970-01-01
  • 2019-05-13
相关资源
最近更新 更多