xcode target-c - избегать нескольких методов с одним и тем же именем (используя 'setEnabled') - PullRequest
1 голос
/ 03 января 2012

Я получаю сообщение об ошибке в XCode:

найдено несколько методов с именем 'setEnabled' с несоответствующим результатом, типом параметра или атрибутами

Я использую следующий код в AppDelegate.м:

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

1 Ответ

2 голосов
/ 03 января 2012

, если вы импортируете BluetoothManager.h, тогда у вас есть разрешение во время компиляции, измените код так:

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

вы пытаетесь поддерживать новый класс, но также работаете в более старомiOS?

в ответ на вопрос 1: «простая» версия, если вы не пытаетесь сделать что-то хитрое, должна отказаться от objc_getClass, который обеспечивает динамическую гибкость, которая нечасто требуется

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

Это предполагает:

  • Класс BluetoothManager объявлен в "BluetoothManager.h"
  • , там объявлен метод класса (иопределено) на нем +sharedInstance (который следует общим соглашениям об именах Objective C, я переименовал бы в +sharedBluetoothManager)
  • BluetoothManager объявляет метод с именем -setEnabled:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...