我在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
类+sharedInstance
(遵循常见的Objective-C命名约定,我将重命名为+sharedBluetoothManager
)-setEnabled:
的方法