【发布时间】:2013-10-10 22:24:03
【问题描述】:
我有三个班级A 类、B 类、C 类。
A类声明如下协议
@protocol calculate <NSObject>
@required
-(void)addNumbers;
-(void)calculateTotal;
@end
在 Class A 的实现中,我已经定义了一个属性。
static id <calculate> delegate;
] B 类 和 C 类 实现了其中定义的协议和方法。
在 A 类的实现文件中,如果我想调用 B 类和 C 类实现的正确协议方法,我正在执行以下操作
id <calculate> delegate = [Class B alloc] init];
[delegate addNumbers];
id <calculate> delgate = [Class C alloc] init];
[delegate addNumbers];
尽管这可行,但我觉得这是不对的。我想知道单个委托对象是否有可能在 B 类或 C 类上确定并调用正确的 addNumbers
【问题讨论】:
-
我从未见过静态委托。
-
对于 C 类,您的意思是
[anotherDelegate addNumbers];?是复制粘贴错误,还是? -
顺便说一句:您正在调用委托和另一个委托属性。但他们不是。
-
由于目标 c 是一种“动态”类型语言,所以我认为您只需将对象(B 类或 C 类对象)分配给委托,运行时将通过查看对象自动调用该方法.
标签: ios iphone objective-c delegates protocols