diff options
-rw-r--r-- | SmartDeviceLink/SDLTCPTransport.m | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/SmartDeviceLink/SDLTCPTransport.m b/SmartDeviceLink/SDLTCPTransport.m index 99e46074c..920af4d38 100644 --- a/SmartDeviceLink/SDLTCPTransport.m +++ b/SmartDeviceLink/SDLTCPTransport.m @@ -46,7 +46,9 @@ static void TCPCallback(CFSocketRef socket, CFSocketCallBackType type, CFDataRef } - (void)connect { + __weak typeof(self) weakself = self; [[NSOperationQueue mainQueue] addOperationWithBlock:^{ + __strong typeof(self) strongself = weakself; SDLLogD(@"Attemping to connect"); int sock_fd = call_socket([self.hostName UTF8String], [self.portNumber UTF8String]); @@ -56,8 +58,8 @@ static void TCPCallback(CFSocketRef socket, CFSocketCallBackType type, CFDataRef } CFSocketContext socketCtxt = {0, (__bridge void *)(self), NULL, NULL, NULL}; - socket = CFSocketCreateWithNative(kCFAllocatorDefault, sock_fd, kCFSocketDataCallBack | kCFSocketConnectCallBack, (CFSocketCallBack)&TCPCallback, &socketCtxt); - CFRunLoopSourceRef source = CFSocketCreateRunLoopSource(kCFAllocatorDefault, socket, 0); + strongself->socket = CFSocketCreateWithNative(kCFAllocatorDefault, sock_fd, kCFSocketDataCallBack | kCFSocketConnectCallBack, (CFSocketCallBack)&TCPCallback, &socketCtxt); + CFRunLoopSourceRef source = CFSocketCreateRunLoopSource(kCFAllocatorDefault, strongself->socket, 0); CFRunLoopRef loop = CFRunLoopGetCurrent(); CFRunLoopAddSource(loop, source, kCFRunLoopDefaultMode); CFRelease(source); |