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调用myUIViewController
并使用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
),…但这很奇怪,不是推荐的解决方案。为什么要这样做?