2013-09-25 2 views
0

Я использую CocoaAsyncSocket Library, чтобы попытаться настроить простую TCP-связь с моего устройства iOS на сервер где-то и прямо сейчас. Я пытаюсь просто пытаться проверьте мою настройку и что я подключаюсь к удаленному IP-адресу.Ошибка SIGBART при попытке подключения к TCP-серверу на iOS

После загрузки библиотеки я открыл следующий проект:

GCD-> Xcode-> ConnectTest-> Мобильная

Я открыл этот, как я считаю, что это самый простой пример и витрины, что мне нужно для этого. Я запустил программу в редакторе, не касаясь кода, и он работает по назначению. Но когда я привожу код к моей программе я получаю последующие заносить ошибки:

 -[BTLECentralViewController window]: unrecognized selector sent to instance 0x17e2c460 
    *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[BTLECentralViewController window]: unrecognized selector sent to instance 0x17e2c460' 
    *** First throw call stack: 
    (0x314a0e8b 0x3b79a6c7 0x314a47b7 0x314a2f55 0x313f1e98 0xc5e89 0x33c2ab3b 0x33c2a8f9 0x33db75a3 0x33cd51df 0x33cd4fe9 0x33cd4f7d 0x33c26533 0x338adf43 0x338a9767 0x338a95f9 0x338a900d 0x338a8e1f 0x338a2b4d 0x3146bf71 0x314698ff 0x31469c4b 0x313d4541 0x313d4323 0x3610b2eb 0x33c8b1e5 0xc4bb9 0x3bc93ab7) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

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

Так прямо сейчас мой viewcontroller.h выглядит следующим образом:

#import <UIKit/UIKit.h> 
@class GCDAsyncSocket; 
@class BTLECentralViewController; 

@interface BTLECentralViewController : UIViewController <UIApplicationDelegate> 
{ 
    GCDAsyncSocket *async_socket; 
} 

@property (nonatomic) IBOutlet BTLECentralViewController *view_controller; 

@end 

И сопровождающий файл .m выглядит следующим образом. Я отправлю только методы кода, для которых я добавил новый код. Я не буду тратить ваше время, вкладывая весь класс.

#import "GCDAsyncSocket.h" 

#if USE_SECURE_CONNECTION 
#define HOST @"www.paypal.com" 
#define PORT 443 
#else 
#define HOST @"google.com"; 
#define PORT 80 
#endif 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Start up the CBCentralManager 
    _centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil]; 



    dispatch_queue_t mainQueue = dispatch_get_main_queue(); 

    async_socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:mainQueue]; 

#if USE_SECURE_CONNECTION 
    { 
     NSString *host = HOST; 
     uint16_t port = PORT; 

     DDLogInfo(@"Connecting to \"%@\" on port %hu...", host, port); 
     self.viewController.label.text = @"Connecting..."; 

     NSError *error = nil; 
     if (![asyncSocket connectToHost:@"www.paypal.com" onPort:port error:&error]) 
     { 
      DDLogError(@"Error connecting: %@", error); 
      self.viewController.label.text = @"Oops"; 
     } 
    } 
#else 
    { 
     NSString *host = HOST; 
     uint16_t port = PORT; 

     // DDLogInfo(@"Connecting to \"%@\" on port %hu...", host, port); 
     _estimote_3_label.text = @"Connecting..."; 

     NSError *error = nil; 
     if (![async_socket connectToHost:host onPort:port error:&error]) 
     { 
      //  DDLogError(@"Error connecting: %@", error); 
      _estimote_3_label.text = @"Oops"; 
     } 

     // You can also specify an optional connect timeout. 

     // NSError *error = nil; 
     // if (![asyncSocket connectToHost:host onPort:80 withTimeout:5.0 error:&error]) 
     // { 
     //  DDLogError(@"Error connecting: %@", error); 
     // } 

    } 
#endif 


    // Normal iOS stuff... 

    self.window.rootViewController = self.view_controller; 
    [self.window makeKeyAndVisible]; 
} 

Как я уже сказал, моя надежда на это должно было произойти через с «Connected» строки появляются в моем журнале отладки. Но когда я запускаю его я получаю ошибку журнала отладки я вставленную в верхнем и ошибке SIGBART в моем основном классе, который выглядит следующим образом:

#import <UIKit/UIKit.h> 

#import "AppDelegate.h" 

int main(int argc, char *argv[]) 
{ 
    @autoreleasepool { 
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
    } 
} 

Может кто-нибудь с большим опытом работы, используя библиотеку, пожалуйста, помогите мне и скажите мне, что я сделал, и почему я получаю эти ошибки?

Обратите внимание: в редакторе образец проекта отлично работает и работает на моем iPhone 5 отлично работает. это просто, когда я привожу соответствующий код в свой проект, чтобы получить эти проблемы.

ответ

0

BTLECentralViewController и UIViewController не имеет окна свойство, которое вы пытаетесь использовать:

self.window.rootViewController = self.view_controller; 
[self.window makeKeyAndVisible]; 

Это должно быть помещено в AppDelegate (UIResponder) класса я считаю.

Смежные вопросы