Iphone 如何根据BOOL值对其他类隐藏实现的委托方法目标c

Iphone 如何根据BOOL值对其他类隐藏实现的委托方法目标c,iphone,objective-c,ios,Iphone,Objective C,Ios,我需要在UIViewController类中隐藏自定义delegate的实现方法,具体取决于BOOL属性“ishiden”。我从两个地方调用了一个UIViewController,需要对其中一个类隐藏委托方法。例如,类A和B调用myUIViewController并使用respondsToSelector:@selector(myMethod)检查此方法,如果BOOL属性为TRUE,则让respondsToSelector方法返回TRUE值,否则-返回FALSE。这可能吗?嗯……可以通过运行时交

我需要在
UIViewController
类中隐藏自定义
delegate
的实现方法,具体取决于
BOOL
属性“ishiden”。我从两个地方调用了一个
UIViewController
,需要对其中一个类隐藏委托方法。例如,类A和B调用my
UIViewController
并使用
respondsToSelector:@selector(myMethod)
检查此方法,如果
BOOL
属性为
TRUE
,则让
respondsToSelector
方法返回
TRUE
值,否则-
返回FALSE
。这可能吗?

嗯……可以通过运行时交换选择器的实现(例如,交换到一个不执行任何操作的实现),但这是一个糟糕的解决方案。这会影响所有实例——这种方法使单例看起来像黄金


取而代之的是,考虑将条件引入到<代码> MyFrase<代码>中,因此MyMead不做任何动态的事情。

……可以通过运行时交换选择器的实现(例如,实现一个什么都不做的),但这是一个可怕的解决方案。这会影响所有实例——这种方法使单例看起来像黄金


取而代之的是,考虑将条件引入到<代码> MyFrase< /C>中,所以My方法不做任何动态操作。

让委托人调用这些方法。根据bool值,在它们中执行任务或让它通过

让代理调用这些方法。。根据bool值,在它们中执行任务或让它通过

有一种模式,您可以按如下方式定义委托方法:

@protocol MyObjectDelegate <NSObject>

    - (void)myObject:(id)myObject processSomeData:(id)someData;

@end

当然,有一些技术可以通过与Objective-C运行时交互来添加和删除对象方法,但我不确定这是否是一个好主意。

有一种模式可以将委托方法定义为:

@protocol MyObjectDelegate <NSObject>

    - (void)myObject:(id)myObject processSomeData:(id)someData;

@end
当然,有一些技术可以通过与Objective-C运行时交互来添加和删除对象方法,但我不确定这是否是一个好主意。

您可以覆盖
-(BOOL)respondsToSelector:(SEL)SEL
,并在那里使用一些标志,您可以将选择器与
SEL_isEqual
进行比较(
objc/runtime.h
),…但这很奇怪,不是推荐的解决方案。为什么要这样做?您可以覆盖
-(BOOL)respondsToSelector:(SEL)SEL
,并在那里玩一些标志,您可以将选择器与
SEL_isEqual
objc/runtime.h
),…但这很奇怪,不是推荐的解决方案。为什么要这样做?