我在XCode中遇到错误:

找到名称,结果类型,参数类型或属性不匹配的多个名为“setEnabled”的方法

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

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

最佳答案

如果要导入BluetoothManager.h,则在编译时已解决它,请调整代码以使其:

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

您是否要支持新 class ,但还要在较旧的iOS中运行?

针对第1季度的问题:如果您不想做任何棘手的事情,那么“简单”版本就是放弃objc_getClass,它提供了动态灵活性,这种灵活性通常不需要
#import "BluetoothManager.h"
BluetoothManager *btCont = [BluetoothManager sharedInstance];
[btCont setEnabled:!currentState];

假设:
  • 在“BluetoothManager.h”中声明了BluetoothManager
  • 上有一个声明(定义)的类方法+sharedInstance(遵循常见的Objective-C命名约定,我将重命名为+sharedBluetoothManager)
  • BluetoothManager声明一个称为-setEnabled:的方法
  • 09-25 20:55