xcode objective-c - 避免使用同名的多个方法(使用'setEnabled')

时间:2012-01-03 18:35:59

标签: objective-c ios xcode ios4 ios5

我在XCode中遇到错误:

找到名为'setEnabled'的多个方法,其中包含不匹配的结果,参数类型或属性

我在AppDelegate.m中使用以下代码:

#import "BluetoothManager.h"
Class BluetoothManager = objc_getClass( "BluetoothManager" ) ;
id btCont = [BluetoothManager sharedInstance] ;
[btCont setEnabled:!currentState] ;

1 个答案:

答案 0 :(得分:2)

如果您要导入BluetoothManager.h,那么您可以在编译时解决它,请调整代码说:

#import "BluetoothManager.h"
Class BluetoothManagerClass = objc_getClass( "BluetoothManager" );
BluetoothManager *btCont = [BluetoothManagerClass sharedInstance];
[btCont setEnabled:!currentState];

您是在尝试支持新课程,还是在较旧的iOS上运行?

回应Q1:“简单”版本,如果你不想做任何棘手的事情,就是放弃提供动态灵活性的objc_getClass,而不是经常需要的

#import "BluetoothManager.h"
BluetoothManager *btCont = [BluetoothManager sharedInstance];
[btCont setEnabled:!currentState];

这假定:

  • 班级BluetoothManager在“BluetoothManager.h”
  • 中声明
  • +sharedInstance上声明(和定义)了一个类方法(遵循常见的Objective-C命名约定,我将重命名为+sharedBluetoothManager
  • BluetoothManager声明了一个名为-setEnabled:
  • 的方法