【发布时间】:2012-01-24 10:59:00
【问题描述】:
这可能是我做错了设计模式。
我正在使用NSURLConnection 的应用程序中实现异步委托。一个对象包装NSURLConnection 并处理它的委托消息;效果很好。现在我在使用它的对象中定义我自己的委托(NSURLConnection 消息ConnectionWrapper,ConnectionWrapper 消息NeedsToUseConnection,你明白了),这同样有效,但是,Xcode 发出此警告:
找不到“-request:finishedWithResult”方法
这大概是因为我正在声明我正在调用的委托:
id<NSObject> delegate;
...Xcode 正在检查 NSObject 在 Foundation 框架中声明的内容。我的自定义委托消息不存在。我正在正确地隔离通话:
if([delegate respondsToSelector:@selector(request:finishedWithResult:)])
[delegate request:self finishedWithResult:ret];
除了关闭警告(我喜欢尽可能多地打开警告)之外,是否有办法(通过语法或通过编译器指令)传达我知道此消息未声明的情况?相反,我是否应该为此 á la Java 使用接口设计模式?使用id<WillReceiveRequestMessages> 什么的?
欢迎提出建议。
【问题讨论】:
标签: iphone objective-c cocoa-touch design-patterns