objective-c - 将工作委托(delegate)给两个不同的委托(delegate),这可能吗?

标签 objective-c ios cocoa-touch delegates asihttprequest

我尝试在使用 ASIHTTPRequest 从服务器下载图像时显示 UIProgressView。我想在 UIProgressView 上显示进度,它使用这段代码完美运行:

[request setDownloadProgressDelegate:progressIndicator];

我想在进度条旁边显示 %,这样用户就知道下载了多少百分比。像这样的东西(我用 Photoshop 制作的):

mockup of desired UI


我想到的是用

- (void)request:(ASIHTTPRequest *)request didReceiveBytes:(long long)bytes;

更新我的 UILabel,当 ASI 请求接收到一定数量的字节时,总是调用此方法。

但是要调用这个方法,我必须在我的类中实现它,然后将 setDownloadProgressDelegate 设置为 self,就像这样,

[request setDownloadProgressDelegate:self];

因此,我能否使 request 对象同时具有两个不同的委托(delegate),这样我就可以同时接收到响应?我只需要做一些数学运算来计算百分比并更新我的 UILabel -- 我知道我正在下载的文件的确切大小。

最佳答案

你想使用 NSNotificationCenter。这允许您使用发布/订阅模型松耦合对象。您可以从一个对象发布通知,任意数量的对象都可以获取信息,而无需委托(delegate)的紧密耦合。

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsnotificationcenter_Class/Reference/Reference.html

关于objective-c - 将工作委托(delegate)给两个不同的委托(delegate),这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7961682/

相关文章:

objective-c - iOS:在位置服务后台运行时更新 UI

ios - UITableView 标题不听滚动

ios - 使用 Core Graphics 绘制 UIImage?

ios - 如何获取 iPhone 设备事件

iOS ViewController subview 在键盘出现时移动

c++ - 当从 NSMutableString 中删除 UTF8 表情符号字符时,到 std::string 的转换失败

ios - 根据内容动态调整表格 View 单元格的高度 - iOS Swift

ios - Facebook SDK : AccessToken. CurrentAccessToken 始终为空,即使在登录后也是如此

ios - 在设备上启动应用程序时出错

ios - 2个NSData对象如何输出相同的HEX但在转换为char数组时却不同?