ios - 如何将参数传递给委托(delegate)回调方法?

标签 ios objective-c asynchronous parameters delegates

这看起来真的很奇怪,所以我怀疑这是不是一个好习惯,但我正在开发一个旧应用程序,我需要进行一些更新而不是完全重新设计整个应用程序。

目前,我有一个 UIButton,它有一个 outlet

- (IBAction) toggleBroadcast:(UIButton*) sender 
{
   // configure and start video capture
}

但我正在尝试实现远程配置,它使用设备 ID 调用 php 脚本并返回一个(解析为 JSON 的)NSDictionary,它被加载到一个静态配置类中。

由于网络需要异步委托(delegate)方法和我的 //配置并开始视频捕获 代码依赖于网络检索数据,我必须让我的 toggleBroadcast 函数看起来像:

- (IBAction) toggleBroadcast:(UIButton*) sender 
    {
       // get identifier, fill request...
       // NSURLConnection* connection = [NSURLConnection connectionWithRequest:request
                                                                      delegate:self];
    }

connectionDidFinishLoading 委托(delegate)方法然后调用我原来的 toggleBroadcast 代码,现在单独封装以便在适当的时候调用它。

但是!我需要那个 sender

那么我怎样才能将 sender 作为参数发送到我的委托(delegate)方法,这样我就可以将它发送到我的新

- (void) originalToggleBroadcastCode:(UIButton*) sender?

最佳答案

你可以使用非常好的 BlocksKit library这将允许你做:

- (IBAction) toggleBroadcast:(UIButton*) sender 
{
    NSURLConnection *connection = [NSURLConnection connectionWithRequest:request];

    connection.successBlock = ^(NSURLConnection *connection, NSURLResponse *response, NSData *responseData){
         [self originalToggleBroadcastCode:sender];

    [connection start];
 };

关于ios - 如何将参数传递给委托(delegate)回调方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16652302/

相关文章:

ios - 生产环境中的 CloudKit 自定义区域

ios - 搜索栏 - 导航栏中的取消按钮

objective-c - pushViewController 不适用于标签栏 Controller

java - 在android中的asynctask中等待一个异步任务

ios - AudioKit 5 iOS 当前播放时间

ios - 如何确定两个数学表达式 'sort of' 是否相同?

ios - 将数据从登录 Controller 传递到 SWRevealViewController 的 frontviewcontroller

ios - 当 iOS 应用程序处于后台时,解析查询不返回,由后台获取触发

c# - 不支持 NUnit 异步设置?

javascript - 弃用警告 : Calling an asynchronous function without callback is deprecated