在iOS 7中,“isConnected”已被弃用

7

我知道这是一个愚蠢的问题,但还是想问一下。

我有一个旧应用程序,它使用isConnected。现在我收到一个警告说它已经过时了。我可以只删除这行代码而不会有任何影响吗?或者我该如何处理这个问题。对不起我这么迟钝。

这里有一些代码,它来自CBPeripheral框架。

- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error
{
    // Deal with errors (if any)
    if (error) {
        NSLog(@"Error discovering characteristics: %@", [error localizedDescription]);
        [self cleanup];
        return;
    }
}
- (void)cleanup
{
    // Don't do anything if we're not connected
    if (!self.discoveredPeripheral.isConnected) // here is where the warning comes {
        return;
    }

我认为我找到了答案。

- (void)cleanup
    {
        // Don't do anything if we're not connected
        if (CBPeripheralStateDisconnected)  {
            return;
        }

我在我的.h文件中添加了@property(readonly) CBPeripheralState state;,与此同时我没有收到任何错误提示。有人可以验证一下吗?

isConnected 方法在哪个类中?当你在文档中查找该类的 isConnected 方法时,应该会告诉你应该使用什么新方法替代它。 - Brad Larson
请展示一些代码,这个属性是来自CBPeripheral还是其他什么地方?这个问题可能会被标记为非常低质量。 - Tomasz Szulc
每次我遇到警告时,我都会删除代码,问题就解决了。但是经常这样做会导致其他问题出现。更严重的是,需要更多的代码来解决问题。 - Vincent Guerci
1个回答

17

根据苹果文档所述:

isConnected

一个布尔值,指示外围设备当前是否连接到中央管理器。(只读)(在iOS 7.0中已弃用,请使用state属性替代。)

只需将您的代码替换为:

if (self.discoveredPeripheral.state != CBPeripheralStateConnected)
    return;

另一方面,如果这个方法中只有这些代码,基本上你什么也没做。因此,你可以删除这些无用的代码。这让我认为可能有些东西缺失了… 没有清理吗?


1
我因为常量比较而收到了警告。 - Michal Shatz
@MichalShatz 你可以直接使用 if (!self.discoveredPeripheral.state)。文档:CBPeripheralState - Daniel Storm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接