2012-01-03 4 views
1
내가 엑스 코드에서 오류를 받고 있어요

('는, setEnabled'사용) 같은 이름을 가진 여러 방법을 피하고 : 이름엑스 코드 목표 - C

여러 방법은 일치하지 않는 결과, 매개 변수 유형 또는 특성 발견 '는, setEnabled'

내가 AppDelegate.m에서 다음 코드를 사용하고 있습니다 :

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

-setEnabled: 왜 당신이이 방법을 수행 할 작업라는 메소드를 선언 (공통 목표 - C의 이름 지정 규칙을 따라야 할, 나는 +sharedBluetoothManager에 이름을 바꿀 것)? – Krizz

+0

나는 몰라요. Stack에서 내가해야 할 일을 할 수있게 해주는 코드를 발견했습니다. 불행히도 XCode 프로그래밍에 익숙하지 않습니다. – mheavers

답변

2

당신은 당신이 컴파일 시간에 해결 한 BluetoothManager.h을 가져 오는 경우, 말을 코드를 조정합니다

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

새로운 수업을 지원하려고하지만 이전 IOS에서 실행 중이십니까? Q1에 응답

: 당신이 까다로운 아무것도 시도하지 않는 경우은 "간단한"버전은 종종

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

이 필요하지 않습니다 동적 유연성을 제공하는 objc_getClass을 포기하는 것입니다 가정

  • 클래스 BluetoothManager는 "BluetoothManager.h"에 선언
  • 클래스 메소드가 선언 (및 정의)되어그것에 547,는
  • BluetoothManager는
+0

글쎄,이 응용 프로그램은 정말 누군가의 로컬 전화에서 실행됩니다, 그래서 - 그것은 IOS의 이전 버전을 지원할 필요가 없습니다 - 그것은 블루투스의 원터치 전환을 허용하는 응용 프로그램입니다. 귀하의 코드를 전환 할 때 오류가 발생합니다 : "BluetoothManagerClass"인 "BluetoothManagerClass"도 "undertlared identifier"인 btCont를 사용합니다. – mheavers

+0

편집을 참조하십시오 : 더 간단 할 수도 있습니다 – bshirley

+0

@bshirly 의견을 얻는 이유 그 btCont는 선언되지 않은 식별자입니까? – mheavers