我需要delegate
在UIViewController
类中隐藏我自定义的实现方法,具体取决于BOOL
属性“isHidden”。我从 2 个地方调用一个UIViewController
,我需要从这些类之一中隐藏委托方法。例如 A 类和 B 类调用 myUIViewController
并检查此方法respondsToSelector:@selector(myMethod)
,如果BOOL
属性为TRUE
,则让respondsToSelector
方法返回TRUE
值,否则 - FALSE
。这可能吗?
问问题
92 次
3 回答
2
让委托调用这些方法......并根据布尔值在其中执行任务或让它通过......
于 2012-08-16T08:33:41.267 回答
1
嗯……可以通过运行时交换选择器的实现(例如,到什么都不做的实现),但这是一个糟糕的解决方案。这会影响所有实例——这种方法使单例看起来像黄金。
相反,请考虑将条件引入myMethod
,因此 myMethod 不会动态执行任何操作。
于 2012-08-16T08:33:05.330 回答
1
有一种模式,您可以在其中定义委托方法,如下所示:
@protocol MyObjectDelegate <NSObject>
- (void)myObject:(id)myObject processSomeData:(id)someData;
@end
所以你的委托控制器知道哪个对象请求这个方法并且可以决定做什么。此外,您可以添加一些类似这样的方法来通知对象是否有权在实际发送消息之前访问此方法
- (BOOL)myObjectCanProcessSomeData:(id)myObject;
当然,有一些技术可以通过与 Objective-C 运行时交互来添加和删除对象方法,但我不确定这是否是个好主意。
于 2012-08-16T08:45:47.117 回答