--- src/bluetooth/osx/osxbtperipheralmanager.mm.orig
+++ src/bluetooth/osx/osxbtperipheralmanager.mm
@@ -313,7 +313,7 @@
 - (void)startAdvertising
 {
     state = PeripheralState::waitingForPowerOn;
-    if (manager)
+    if (manager.data())
         [manager setDelegate:nil];
     manager.reset([[CBPeripheralManager alloc] initWithDelegate:self
                    queue:OSXBluetooth::qt_LE_queue()]);
@@ -378,7 +378,7 @@
 
 - (void) addServicesToPeripheral
 {
-    Q_ASSERT(manager);
+    Q_ASSERT(manager.data());
 
     if (nextServiceToAdd < services.size())
         [manager addService:services[nextServiceToAdd++]];
diff --git src/bluetooth/osx/osxbtledeviceinquiry.mm src/bluetooth/osx/osxbtledeviceinquiry.mm
index 4c000a2..d2ff1d4 100644
--- src/bluetooth/osx/osxbtledeviceinquiry.mm
+++ src/bluetooth/osx/osxbtledeviceinquiry.mm
@@ -139,7 +139,7 @@ QT_USE_NAMESPACE
 
 - (void)dealloc
 {
-    if (manager) {
+    if (manager.data()) {
         [manager setDelegate:nil];
         if (internalState == InquiryActive)
             [manager stopScan];
diff --git src/bluetooth/qbluetoothdevicediscoveryagent_osx.mm src/bluetooth/qbluetoothdevicediscoveryagent_osx.mm
index 18cda39..db982a5 100644
--- src/bluetooth/qbluetoothdevicediscoveryagent_osx.mm
+++ src/bluetooth/qbluetoothdevicediscoveryagent_osx.mm
@@ -181,7 +181,7 @@ QBluetoothDeviceDiscoveryAgentPrivate::QBluetoothDeviceDiscoveryAgentPrivate(con
 
 QBluetoothDeviceDiscoveryAgentPrivate::~QBluetoothDeviceDiscoveryAgentPrivate()
 {
-    if (inquiryLE && agentState != NonActive) {
+    if (inquiryLE.data() && agentState != NonActive) {
         // We want the LE scan to stop as soon as possible.
         if (dispatch_queue_t leQueue = OSXBluetooth::qt_LE_queue()) {
             // Local variable to be retained ...
@@ -195,7 +195,7 @@ bool QBluetoothDeviceDiscoveryAgentPrivate::isValid() const
 
 bool QBluetoothDeviceDiscoveryAgentPrivate::isValid() const
 {
-    return hostController && [hostController powerState] == kBluetoothHCIPowerStateON;
+    return hostController.data() && [hostController powerState] == kBluetoothHCIPowerStateON;
 }
 
 bool QBluetoothDeviceDiscoveryAgentPrivate::isActive() const
@@ -290,11 +290,11 @@ void setError(QBluetoothDeviceDiscoveryAgent::Error,
 
     // Check queue and create scanner:
     inquiryLE.reset([[LEDeviceInquiryObjC alloc] initWithNotifier:notifier.data()]);
-    if (inquiryLE)
+    if (inquiryLE.data())
         notifier.take(); // Whatever happens next, inquiryLE is already the owner ...
 
     dispatch_queue_t leQueue(qt_LE_queue());
-    if (!leQueue || !inquiryLE) {
+    if (!leQueue || !inquiryLE.data()) {
         setError(QBluetoothDeviceDiscoveryAgent::UnknownError,
                  QCoreApplication::translate(DEV_DISCOVERY, DD_NOT_STARTED_LE));
         agentState = NonActive;
diff --git src/bluetooth/qbluetoothlocaldevice_osx.mm src/bluetooth/qbluetoothlocaldevice_osx.mm
index 24cc2bb..f204774 100644
--- src/bluetooth/qbluetoothlocaldevice_osx.mm
+++ src/bluetooth/qbluetoothlocaldevice_osx.mm
@@ -149,7 +149,7 @@ QBluetoothLocalDevicePrivate::QBluetoothLocalDevicePrivate(QBluetoothLocalDevice
 
 bool QBluetoothLocalDevicePrivate::isValid() const
 {
-    return hostController;
+    return hostController.data();
 }
 
 void QBluetoothLocalDevicePrivate::requestPairing(const QBluetoothAddress &address, Pairing pairing)
diff --git src/bluetooth/qbluetoothserver_osx.mm src/bluetooth/qbluetoothserver_osx.mm
index 99fcf58..352c793 100644
--- src/bluetooth/qbluetoothserver_osx.mm
+++ src/bluetooth/qbluetoothserver_osx.mm
@@ -120,7 +120,7 @@ bool QBluetoothServerPrivate::startListener(quint16 realPort)
         return false;
     }
 
-    if (!listener)
+    if (!listener.data())
         listener.reset([[ObjCListener alloc] initWithListener:this]);
 
     bool result = false;
@@ -142,7 +142,7 @@ void QBluetoothServerPrivate::stopListener()
 
 void QBluetoothServerPrivate::openNotify(IOBluetoothRFCOMMChannel *channel)
 {
-    Q_ASSERT_X(listener, Q_FUNC_INFO, "invalid listener (nil)");
+    Q_ASSERT_X(listener.data(), Q_FUNC_INFO, "invalid listener (nil)");
     Q_ASSERT_X(channel, Q_FUNC_INFO, "invalid channel (nil)");
     Q_ASSERT_X(q_ptr, Q_FUNC_INFO, "invalid q_ptr (null)");
 
@@ -154,7 +154,7 @@ void QBluetoothServerPrivate::openNotify(IOBluetoothRFCOMMChannel *channel)
 
 void QBluetoothServerPrivate::openNotify(IOBluetoothL2CAPChannel *channel)
 {
-    Q_ASSERT_X(listener, Q_FUNC_INFO, "invalid listener (nil)");
+    Q_ASSERT_X(listener.data(), Q_FUNC_INFO, "invalid listener (nil)");
     Q_ASSERT_X(channel, Q_FUNC_INFO, "invalid channel (nil)");
     Q_ASSERT_X(q_ptr, Q_FUNC_INFO, "invalid q_ptr (null)");
 
@@ -291,7 +291,7 @@ bool QBluetoothServer::listen(const QBluetoothAddress &address, quint16 port)
 {
     typedef QBluetoothServerPrivate::ObjCListener ObjCListener;
 
-    if (d_ptr->listener) {
+    if (d_ptr->listener.data()) {
         qCWarning(QT_BT_OSX) << "already in listen mode, close server first";
         return false;
     }
diff --git src/bluetooth/qbluetoothserviceinfo_osx.mm src/bluetooth/qbluetoothserviceinfo_osx.mm
index ee19f1d..f540b1f 100644
--- src/bluetooth/qbluetoothserviceinfo_osx.mm
+++ src/bluetooth/qbluetoothserviceinfo_osx.mm
@@ -172,7 +172,7 @@ bool QBluetoothServiceInfoPrivate::unregisterService()
     if (!registered)
         return false;
 
-    Q_ASSERT_X(serviceRecord, Q_FUNC_INFO, "service registered, but serviceRecord is nil");
+    Q_ASSERT_X(serviceRecord.data(), Q_FUNC_INFO, "service registered, but serviceRecord is nil");

     [serviceRecord removeServiceRecord];
 
diff --git src/bluetooth/qbluetoothsocket_osx.mm src/bluetooth/qbluetoothsocket_osx.mm
index aa99455..c6ccde8 100644
--- src/bluetooth/qbluetoothsocket_osx.mm
+++ src/bluetooth/qbluetoothsocket_osx.mm
@@ -103,13 +103,13 @@ void QBluetoothSocketPrivate::connectToService(const QBluetoothAddress &address,
 
     if (socketType == QBluetoothServiceInfo::RfcommProtocol) {
         rfcommChannel.reset([[ObjCRFCOMMChannel alloc] initWithDelegate:this]);
-        if (rfcommChannel)
+        if (rfcommChannel.data())
             status = [rfcommChannel connectAsyncToDevice:address withChannelID:port];
         else
             status = kIOReturnNoMemory;
     } else if (socketType == QBluetoothServiceInfo::L2capProtocol) {
         l2capChannel.reset([[ObjCL2CAPChannel alloc] initWithDelegate:this]);
-        if (l2capChannel)
+        if (l2capChannel.data())
             status = [l2capChannel connectAsyncToDevice:address withPSM:port];
         else
             status = kIOReturnNoMemory;
@@ -183,10 +183,10 @@ QString QBluetoothSocketPrivate::peerName() const
 
     NSString *nsName = nil;
     if (socketType == QBluetoothServiceInfo::RfcommProtocol) {
-        if (rfcommChannel)
+        if (rfcommChannel.data())
             nsName = [rfcommChannel peerName];
     } else if (socketType == QBluetoothServiceInfo::L2capProtocol) {
-        if (l2capChannel)
+        if (l2capChannel.data())
             nsName = [l2capChannel peerName];
     }
 
@@ -200,10 +200,10 @@ QBluetoothAddress QBluetoothSocketPrivate::peerAddress() const
 {
     BluetoothDeviceAddress addr = {};
     if (socketType == QBluetoothServiceInfo::RfcommProtocol) {
-        if (rfcommChannel)
+        if (rfcommChannel.data())
             addr = [rfcommChannel peerAddress];
     } else if (socketType == QBluetoothServiceInfo::L2capProtocol) {
-        if (l2capChannel)
+        if (l2capChannel.data())
             addr = [l2capChannel peerAddress];
     }
 
@@ -213,10 +213,10 @@ QBluetoothAddress QBluetoothSocketPrivate::peerAddress() const
 quint16 QBluetoothSocketPrivate::peerPort() const
 {
     if (socketType == QBluetoothServiceInfo::RfcommProtocol) {
-        if (rfcommChannel)
+        if (rfcommChannel.data())
             return [rfcommChannel getChannelID];
     } else if (socketType == QBluetoothServiceInfo::L2capProtocol) {
-        if (l2capChannel)
+        if (l2capChannel.data())
             return [l2capChannel getPSM];
     }
 
@@ -233,7 +233,7 @@ void QBluetoothSocketPrivate::_q_writeNotify()
     Q_ASSERT_X(socketType == QBluetoothServiceInfo::L2capProtocol
                || socketType == QBluetoothServiceInfo::RfcommProtocol,
                Q_FUNC_INFO, "invalid socket type");
-    Q_ASSERT_X(l2capChannel || rfcommChannel, Q_FUNC_INFO,
+    Q_ASSERT_X(l2capChannel.data() || rfcommChannel.data(), Q_FUNC_INFO,
                "invalid socket (no open channel)");
     Q_ASSERT_X(q_ptr, Q_FUNC_INFO, "invalid q_ptr (null)");
 
@@ -277,13 +277,13 @@ bool QBluetoothSocketPrivate::setChannel(IOBluetoothRFCOMMChannel *channel)
 
     openMode = QIODevice::ReadWrite;
     rfcommChannel.reset([[ObjCRFCOMMChannel alloc] initWithDelegate:this channel:channel]);
-    if (rfcommChannel) {// We do not handle errors, up to an external user.
+    if (rfcommChannel.data()) {// We do not handle errors, up to an external user.
         q_ptr->setOpenMode(QIODevice::ReadWrite);
         state = QBluetoothSocket::ConnectedState;
         socketType = QBluetoothServiceInfo::RfcommProtocol;
     }
 
-    return rfcommChannel;
+    return rfcommChannel.data();
 }
 
 bool QBluetoothSocketPrivate::setChannel(IOBluetoothL2CAPChannel *channel)
@@ -301,13 +301,13 @@ bool QBluetoothSocketPrivate::setChannel(IOBluetoothL2CAPChannel *channel)
 
     openMode = QIODevice::ReadWrite;
     l2capChannel.reset([[ObjCL2CAPChannel alloc] initWithDelegate:this channel:channel]);
-    if (l2capChannel) {// We do not handle errors, up to an external user.
+    if (l2capChannel.data()) {// We do not handle errors, up to an external user.
         q_ptr->setOpenMode(QIODevice::ReadWrite);
         state = QBluetoothSocket::ConnectedState;
         socketType = QBluetoothServiceInfo::L2capProtocol;
     }
 
-    return l2capChannel;
+    return l2capChannel.data();
 }
 
 
diff --git src/bluetooth/qbluetoothtransferreply_osx.mm src/bluetooth/qbluetoothtransferreply_osx.mm
index 1b84626..fd55e50 100644
--- src/bluetooth/qbluetoothtransferreply_osx.mm
+++ src/bluetooth/qbluetoothtransferreply_osx.mm
@@ -136,13 +136,13 @@ QBluetoothTransferReplyOSXPrivate::~QBluetoothTransferReplyOSXPrivate()
     // The OBEX session will be closed then. If
     // somehow IOBluetooth/OBEX still has a reference to our
     // session, it will not call any of delegate's callbacks.
-    if (session)
+    if (session.data())
         [session closeSession];
 }
 
 bool QBluetoothTransferReplyOSXPrivate::isActive() const
 {
-    return agent || (session && [session hasActiveRequest]);
+    return agent.data() || (session.data() && [session hasActiveRequest]);
 }
 
 bool QBluetoothTransferReplyOSXPrivate::startOPP(const QBluetoothAddress &device)
@@ -218,7 +218,7 @@ void QBluetoothTransferReplyOSXPrivate::sendConnect(const QBluetoothAddress &dev
 void QBluetoothTransferReplyOSXPrivate::sendPut()
 {
     Q_ASSERT_X(inputStream, Q_FUNC_INFO, "invalid input stream (null)");
-    Q_ASSERT_X(session, Q_FUNC_INFO, "invalid OBEX session (nil)");
+    Q_ASSERT_X(session.data(), Q_FUNC_INFO, "invalid OBEX session (nil)");
     Q_ASSERT_X([session isConnected], Q_FUNC_INFO, "not connected");
     Q_ASSERT_X(![session hasActiveRequest], Q_FUNC_INFO,
                "session already has an active request");
@@ -268,7 +268,7 @@ void QBluetoothTransferReplyOSXPrivate::OBEXConnectError(OBEXError errorCode, OB
     Q_UNUSED(errorCode)
     Q_UNUSED(response)
 
-    if (session) {
+    if (session.data()) {
         setReplyError(QBluetoothTransferReply::SessionError,
                       QCoreApplication::translate(TRANSFER_REPLY, TR_CONNECT_FAILED));
     } else {
@@ -283,7 +283,7 @@ void QBluetoothTransferReplyOSXPrivate::OBEXConnectError(OBEXError errorCode, OB
 void QBluetoothTransferReplyOSXPrivate::OBEXConnectSuccess()
 {
     // Now that OBEX connect succeeded, we can send an OBEX put request.
-    if (!session) {
+    if (!session.data()) {
         // We're still in OBEXConnect(), it'll take care of next steps.
         return;
     }
diff --git src/bluetooth/qlowenergycontroller_osx.mm src/bluetooth/qlowenergycontroller_osx.mm
index a0b33a9..fa6e32a 100644
--- src/bluetooth/qlowenergycontroller_osx.mm
+++ src/bluetooth/qlowenergycontroller_osx.mm
@@ -200,7 +200,7 @@
 #ifdef Q_OS_TVOS
     return centralManager;
 #else
-    return centralManager || peripheralManager;
+    return centralManager.data() || peripheralManager.data();
 #endif
 }
 
