Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 异步和回调理解和命名约定_Iphone_Objective C_Asynchronous - Fatal编程技术网

Iphone 异步和回调理解和命名约定

Iphone 异步和回调理解和命名约定,iphone,objective-c,asynchronous,Iphone,Objective C,Asynchronous,我在我的应用程序中使用ASIHTTPRequest,专门用于异步请求。 有些方法是异步方法的组合。 例如,看看某个方法+(void)updateData,它将调用 [x downloadData1]它是异步的 [y downloadData2]是异步的 由于异步/回调机制,我的方法updateData将被拆分(而不是同步上下文中只有一个方法),它将需要: -(void) updateData { ... // Some work x.callback = @selector

我在我的应用程序中使用ASIHTTPRequest,专门用于异步请求。 有些方法是异步方法的组合。 例如,看看某个方法+(void)updateData,它将调用

  • [x downloadData1]它是异步的
  • [y downloadData2]是异步的
由于异步/回调机制,我的方法updateData将被拆分(而不是同步上下文中只有一个方法),它将需要:

-(void) updateData {
    ... // Some work
    x.callback = @selector(updateData1);
    [x downloadData1];
}


-(void) updateData1 {
    ... // Some work
    y.callback = @selector(updateData2);
    [x downloadData2];
}

...

- (void) updateDataN {
    ... // Some work
    // Need to callback my own "delegate"
    [self.target performSelector:callback ...];
}
因此,updateData也是异步的

这段代码不是来自我的项目,我只是试图描述一个简单的例子。但是可以有一些条件调用和复合的复合

在这里,代码变得很难阅读。很难遵循执行流程。 对于通知方法是异步的(Async后缀?)或回调,您建议什么样的良好实践或命名约定?我发现带有数字的后缀很难看,不适合非线性流

你有什么建议?你遇到了什么?
或者,您是否认为这是由于设计糟糕的代码造成的?

将其重构为使用块-这会将响应放在请求旁边?

您是否想过使用类似NSOperation的方法来创建更多模块化请求?如果您将所有请求都转储到一个类中,它可能会变得混乱,但如果您将每个请求分离到不同的类中,它会变得更可读。NSOperation提供了一个很好的排队系统,但创建自己的排队系统也不难。()