Проблема с PHILIPS HUE APPLE SDK

Я только что написал строки Five кода и приложение сработало. Я проверяю много раз, но я не могу отслеживать ошибку в коде.

Я добавил фреймворк.. Никаких предупреждений Нет Ошибок, но почему чертовское приложение вылетает:

#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

Журнал сбоев как...

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)

ОБНОВЛЕНИЕ К ВОПРОСУ

когда я меняю строку 4 на (установить поиск портала на нет), мое приложение работает нормально. Но я хочу, чтобы поиск в Portal и почему это происходит.

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

Ответ 1

Проведя всю ночь в образце приложения, предоставленного PHILIPS, я могу найти ошибку.

В официальной документации PHILIPS HUE они не упоминают, что нам нужно добавить флаг компоновщика ObjC

Добавление флагов -ObjC-флагов Решена моя проблема

Ответ 2

Вопрос

Я получаю непризнанный селектор при использовании Phillips Hue IOS Stack. Может ли кто-нибудь помочь с этим?

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)

Ответ

В большинстве случаев ответ связан с информацией в коде причины. Для этого примера указанная причина:

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

который не сразу вызывается вашим кодом. В этом случае я считаю, что это может произойти, потому что ваш жизненный цикл событий неверен. Я замечаю, что ваш шаблон отличается от того, который показан в примере приложения. Я думаю, вам нужно поменять строки 2 и 3. Вы пытаетесь установить свойство на SDK перед его запуском.

Я бы также переместил всю последовательность запуска SDK в класс App Delegate, если есть какие-либо условия гонки, происходящие внутри. Две строки, которые вы используете для поиска, являются встроенными в приложение QuickStart. Вы также можете попробовать запустить пример приложения, чтобы узнать, есть ли какие-либо проблемы в вашей системе, или может быть даже ошибкой в ​​репо. Попробуйте настроить архитектуру, как указано выше, и она должна дополнительно изолировать проблему.

UPDATE:

Комментарий, похоже, подтверждает вывод о том, что в SDK может быть состояние внутренней расы. Я предлагаю переместить свойство и первые три строки, как указано в AppDelegate, и посмотреть, будет ли это работать, если для параметра portalSearch установлено значение YES.