2015-04-23 17 views
10

Właśnie napisałem Five linie kodu, a aplikacja ulega awarii. Sprawdzam wiele razy, ale nie jestem w stanie śledzić błędu w kodzie.Problem z PHILIPS HUE APPLE SDK

Dodałem ostrzeżenia framework..No żadne błędy, ale dlaczego cholerne awarii aplikacji: log

#import "ViewController.h" 
#import <HueSDK_iOS/HueSDK.h> 

@interface ViewController() 

@property (strong, nonatomic) PHHueSDK *phHueSDK; 
@property (nonatomic, strong) PHBridgeSearching *bridgeSearch; 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.phHueSDK = [[PHHueSDK alloc] init]; //Line 1 

    [self.phHueSDK enableLogging:YES]; //Line 2 

    [self.phHueSDK startUpSDK]; //Line 3 

    self.bridgeSearch = [[PHBridgeSearching alloc] initWithUpnpSearch:YES andPortalSearch:YES andIpAdressSearch:YES]; //Line 4 

// Start search for bridges 
[self.bridgeSearch startSearchWithCompletionHandler:^(NSDictionary *bridgesFound) { 
    // Search is complete, handle results (dictionary contains IP and mac addresses of bridges found) 
}]; Line 5 

} 
@end 

crash jako ...

2015-04-23 17:15:58.750 FreshHUE[8298:161234] -[__NSCFString objectFromJSONString]: unrecognized selector sent to instance 0x7fb9fa547d60 
2015-04-23 17:15:58.849 FreshHUE[8298:161234] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString objectFromJSONString]: unrecognized selector sent to instance 0x7fb9fa547d60' 
*** First throw call stack: 
(
     0 CoreFoundation      0x0000000106512c65 __exceptionPreprocess + 165 
     1 libobjc.A.dylib      0x00000001061a9bb7 objc_exception_throw + 45 
     2 CoreFoundation      0x000000010651a0ad -[NSObject(NSObject) doesNotRecognizeSelector:] + 205 
     3 CoreFoundation      0x000000010647013c ___forwarding___ + 988 
     4 CoreFoundation      0x000000010646fcd8 _CF_forwarding_prep_0 + 120 
     5 FreshHUE       0x0000000105c01cdd __38-[PHBridgeSearching startPortalSearch]_block_invoke + 332 
     6 FreshHUE       0x0000000105c006ac -[PHHttpRequester connectionDidFinishLoading:] + 101 
     7 CFNetwork       0x000000010859c0bc __65-[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:]_block_invoke + 69 
     8 CFNetwork       0x000000010859c060 -[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:] + 199 
     9 CFNetwork       0x000000010859c1c7 -[NSURLConnectionInternal _withActiveConnectionAndDelegate:] + 48 
     10 CFNetwork       0x000000010846b757 ___ZN27URLConnectionClient_Classic26_delegate_didFinishLoadingEU13block_pointerFvvE_block_invoke + 107 
     11 CFNetwork       0x0000000108538de1 ___ZN27URLConnectionClient_Classic18_withDelegateAsyncEPKcU13block_pointerFvP16_CFURLConnectionPK33CFURLConnectionClientCurrent_VMaxE_block_invoke_2 + 273 
     12 CFNetwork       0x0000000108456a26 _ZN19RunloopBlockContext13_invoke_blockEPKvPv + 72 
     13 CoreFoundation      0x0000000106419354 CFArrayApplyFunction + 68 
     14 CFNetwork       0x00000001084568e7 _ZN19RunloopBlockContext7performEv + 133 
     15 CFNetwork       0x0000000108456726 _ZN17MultiplexerSource7performEv + 256 
     16 CFNetwork       0x000000010845653c _ZN17MultiplexerSource8_performEPv + 72 
     17 CoreFoundation      0x0000000106446431 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 
     18 CoreFoundation      0x000000010643c2fd __CFRunLoopDoSources0 + 269 
     19 CoreFoundation      0x000000010643b934 __CFRunLoopRun + 868 
     20 CoreFoundation      0x000000010643b366 CFRunLoopRunSpecific + 470 
     21 Foundation       0x0000000105d5ef92 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 275 
     22 FreshHUE       0x0000000105c00fc7 __32-[PHBridgeSearching startSearch]_block_invoke + 253 
     23 libdispatch.dylib     0x0000000108cd0186 _dispatch_call_block_and_release + 12 
     24 libdispatch.dylib     0x0000000108cef614 _dispatch_client_callout + 8 
     25 libdispatch.dylib     0x0000000108cd9552 _dispatch_root_queue_drain + 1768 
     26 libdispatch.dylib     0x0000000108cdab17 _dispatch_worker_thread3 + 111 
     27 libsystem_pthread.dylib    0x00000001090746cb _pthread_wqthread + 729 
     28 libsystem_pthread.dylib    0x00000001090724a1 start_wqthread + 13 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 
(lldb) 

AKTUALIZACJA NA PYTANIE

gdy jest Zmieniam linię 4 na (Ustaw wyszukiwanie w portalu na nie) moja aplikacja działa poprawnie ... Ale chcę wyszukiwania w portalu i dlaczego tak się dzieje

self.bridgeSearch = [[PHBridgeSearching alloc] initWithUpnpSearch:YES andPortalSearch:NO andIpAdressSearch:YES]; //Line 4 
+0

Nie ma sensu katastrofy w powyższym kodzie. pokaż, że blok kończący zadanie. Myślę, że jest błąd. – Mani

+0

nie ma nic w zakończeniu bloku ... napisałem tak dużo kodu tylko – Dalvik

Odpowiedz

10

Po spędzeniu całej nocy w przykładowej aplikacji dostarczonej przez PHILIPS mogę zlokalizować błąd.

W oficjalnej dokumentacji PHILIPS HUE oni nie wspomnieć, że musimy dodać -ObjC Linker flagi

Dodajesz -ObjC łącznik Oznacz rozwiązać mój problem

1

Pytanie

jestem coraz nierozpoznany selektor przy użyciu Phillips Hue IOS Stack. Czy ktoś może w tym pomóc?

2015-04-23 17:15:58.750 FreshHUE[8298:161234] -[__NSCFString objectFromJSONString]: unrecognized selector sent to instance 0x7fb9fa547d60 
2015-04-23 17:15:58.849 FreshHUE[8298:161234] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString objectFromJSONString]: unrecognized selector sent to instance 0x7fb9fa547d60' 
*** First throw call stack: 
(
     0 CoreFoundation      0x0000000106512c65 __exceptionPreprocess + 165 
     1 libobjc.A.dylib      0x00000001061a9bb7 objc_exception_throw + 45 
     2 CoreFoundation      0x000000010651a0ad -[NSObject(NSObject) doesNotRecognizeSelector:] + 205 
     3 CoreFoundation      0x000000010647013c ___forwarding___ + 988 
     4 CoreFoundation      0x000000010646fcd8 _CF_forwarding_prep_0 + 120 
     5 FreshHUE       0x0000000105c01cdd __38-[PHBridgeSearching startPortalSearch]_block_invoke + 332 
     6 FreshHUE       0x0000000105c006ac -[PHHttpRequester connectionDidFinishLoading:] + 101 
     7 CFNetwork       0x000000010859c0bc __65-[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:]_block_invoke + 69 
     8 CFNetwork       0x000000010859c060 -[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:] + 199 
     9 CFNetwork       0x000000010859c1c7 -[NSURLConnectionInternal _withActiveConnectionAndDelegate:] + 48 
     10 CFNetwork       0x000000010846b757 ___ZN27URLConnectionClient_Classic26_delegate_didFinishLoadingEU13block_pointerFvvE_block_invoke + 107 
     11 CFNetwork       0x0000000108538de1 ___ZN27URLConnectionClient_Classic18_withDelegateAsyncEPKcU13block_pointerFvP16_CFURLConnectionPK33CFURLConnectionClientCurrent_VMaxE_block_invoke_2 + 273 
     12 CFNetwork       0x0000000108456a26 _ZN19RunloopBlockContext13_invoke_blockEPKvPv + 72 
     13 CoreFoundation      0x0000000106419354 CFArrayApplyFunction + 68 
     14 CFNetwork       0x00000001084568e7 _ZN19RunloopBlockContext7performEv + 133 
     15 CFNetwork       0x0000000108456726 _ZN17MultiplexerSource7performEv + 256 
     16 CFNetwork       0x000000010845653c _ZN17MultiplexerSource8_performEPv + 72 
     17 CoreFoundation      0x0000000106446431 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 
     18 CoreFoundation      0x000000010643c2fd __CFRunLoopDoSources0 + 269 
     19 CoreFoundation      0x000000010643b934 __CFRunLoopRun + 868 
     20 CoreFoundation      0x000000010643b366 CFRunLoopRunSpecific + 470 
     21 Foundation       0x0000000105d5ef92 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 275 
     22 FreshHUE       0x0000000105c00fc7 __32-[PHBridgeSearching startSearch]_block_invoke + 253 
     23 libdispatch.dylib     0x0000000108cd0186 _dispatch_call_block_and_release + 12 
     24 libdispatch.dylib     0x0000000108cef614 _dispatch_client_callout + 8 
     25 libdispatch.dylib     0x0000000108cd9552 _dispatch_root_queue_drain + 1768 
     26 libdispatch.dylib     0x0000000108cdab17 _dispatch_worker_thread3 + 111 
     27 libsystem_pthread.dylib    0x00000001090746cb _pthread_wqthread + 729 
     28 libsystem_pthread.dylib    0x00000001090724a1 start_wqthread + 13 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 
(lldb) 

Odpowiedź

W większości przypadków odpowiedź jest związana z informacji zawartych w kodzie przyczyny. W tym przypadku podana przyczyna to:

'-[__NSCFString objectFromJSONString]: unrecognized selector sent to instance 0x7fb9fa547d60' 

Która nie jest natychmiast wywoływana przez twój kod. W tym przypadku wydaje mi się, że tak się dzieje, ponieważ cykl życia wydarzenia jest nieprawidłowy. Zauważyłem, że twój wzorzec różni się od tego pokazanego w przykładowej aplikacji. Myślę, że musisz zamienić linie 2 i 3. Próbujesz ustawić właściwość w SDK przed uruchomieniem.

Chciałbym również przenieść całą sekwencję startową SDK do klasy Delegat aplikacji, na wypadek, gdyby zdarzały się wewnętrzne warunki wyścigu. Dwie linie używane do wyszukiwania wydają się być zgodne z przykładową aplikacją QuickStart. Możesz też spróbować uruchomić przykładową aplikację, aby sprawdzić, czy nie występują jakieś problemy w systemie lub może to być błąd w repozytorium. Spróbuj dostosować architekturę zgodnie z powyższym opisem, a powinna ona dodatkowo odizolować problem.

UPDATE:

Komentarz wydaje się, by stwierdzić, że nie może być wewnętrznym wyścigu dzieje się w SDK. Sugeruję przeniesienie właściwości i pierwszych trzech wierszy, jak to zaznaczono, do AppDelegate i zobaczenie, czy to zadziała, gdy właściwość portalSearch ustawiona jest na TAK.

+0

i śledziłem sekwencję stąd .. http: //www.developers.meethue.com/documentation/apple-api-guide – Dalvik

+0

i kiedy w zestawie portalSzukaj na NIE .. mój kod działa dobrze – Dalvik

+0

Wymieniłem linie, ale nic się nie dzieje ..i przykładowa aplikacja działa dobrze na moim systemie. – Dalvik

Powiązane problemy