2017-04-11 14 views
0

IOS에서 블루투스 주변 장치로 16 진수 데이터를 보내려고합니다. SEND라는 버튼 하나가 키보드를 닫고 텍스트 필드의 정보를 control이라는 지정된 특성으로 보내도록 사용자 지정 한 타사 키보드가 있습니다.다른 클래스의 메서드 호출, 전달되지 않은 변수

나는 두 클래스가 : 나는 BTLECentralViewController에 배치 버튼을 사용하는 경우

송신 기능이 잘 작동

MRHexKeyboardBTLECentralViewController을,하지만 난 키보드에서 송신 함수를 호출 할 때이 쓸 수있는 특성이 없으므로 더 이상 작동하지 않습니다.

BTLECentralViewController에서

: 나는 키보드 방법이 양식을 호출 할 때

-(IBAction)sendCmdControl:(id)sender;{ 
    //When button is pressed send data 
    [self sendDataCMD]; 

} 

-(void)sendDataCMD{ 
    if (!_control) { 
     NSLog(@"No Characteristic to write to"); 
     return; 
    } 
    //sending commandToSend to characteristic 'control' 
    [self.discoveredPeripheral writeValue:commandToSend forCharacteristic:self.control type:CBCharacteristicWriteWithResponse]; 
} 

는 지금이

MRHexKeyboard 수행

BTLECentralViewController* myScript = [[BTLECentralViewController alloc] init]; 
[myScript sendDataCMD]; 

난 데 문제는 : 메소드 실행되지만이 변수를 전달하지 않았으므로 데이터를 보낼 특성이 없습니다.

나는 MRHexKeyboard 클래스가 BTLECentralViewController에 선언 된 절을 보지 못하기 때문에 그것을 믿는다. ??

@property (strong, nonatomic) CBCentralManager  *centralManager; 
@property (strong, nonatomic) CBPeripheral   *discoveredPeripheral; 

어떻게하면 다른 클래스에 액세스 할 수있게합니까 ??

저는 iOS 및 ObjectiveC에 매우 신선합니다.

+2

'BTLECentralViewController * myScript = [[BTLECentralViewController alloc] init]'. 완전히 새로운 객체를 만들고 있습니다. – Larme

+0

Larme의 덧글에 약간 확장 : 속성은 클래스가 아니라 객체 인스턴스에 있습니다. 새로운 속성을 제공하기 위해 무언가를하지 않는 한, 새 View Controller를 생성 (alloc & init)하면 nil centralManager 및 discoveredPeripheral 속성이 생성됩니다. 네가 기대하는 바가 분명하지 않아. 이것은 꽤 기본적인 OO 물건입니다. – CuriousRabbit

+0

@CuriousRabit -> 감사합니다. 저는 OO 기초가 심각하게 부족하다고 생각합니다. -> 이것에 대한 좋은 참고 자료를 어디에서 찾을 수 있는지 아십니까? –

답변

0

코드를 볼 때 CBCentralManager 및 CBPeripheral의 싱글 톤 개체를 만들 것을 제안 할 수 있으므로 ViewController를 초기화 할 때 nil이되지 않습니다. 또는 모든 활동을 수행하기 위해 BLEManager 싱글 톤 클래스를 생성 할 수 있습니다.