【问题标题】:What should I pass as parameter to a method expecting a NSError**?我应该将什么作为参数传递给期望 NSError** 的方法?
【发布时间】:2009-10-26 13:56:21
【问题描述】:

我一直在为不使用对等选择器的新游戏创建点对点连接。然而,我对在这里放什么感到目瞪口呆:

- (void)session:(GKSession *)session didReceiveConnectionRequestFromPeer:(NSString *)peerID {
    NSLog(@"I GOTS A CONNECTION REQUEST");
    if(connected == YES) {
        //deny all requests
    }
    else if(connected == NO) {
        [session acceptConnectionFromPeer:peerID error:???];
    }
}

问号所在的位置应该放什么?文档说 NSError **。

【问题讨论】:

    标签: iphone objective-c nserror


    【解决方案1】:

    它是一个指向 NSError* 的指针,所以:

    NSError* error=nil;
    [session acceptConnectionFromPeer:peerID error:&error];
    

    【讨论】:

    • 消除了一个错误。但是,如果我想构造一个错误,我应该在里面放什么。
    • 遗憾的是,UIKit 缺少 AppKit 的 presentError: 方法,因此您只能自己呈现错误。快速简便的方法是使用 UIAlertView - 由您决定标题和消息,尽管您可以使用 -[NSError localDescription]
    • -acceptConnectionFromPeer: error: 将自动释放的NSError 分配给指针。你可以检查if (error) { printf("ERROR"); }是否有错误
    【解决方案2】:

    如果没有错误设置error为nil。

    error 是一种向应用程序的其余部分传达为什么连接已建立的方法。

    在您的示例中,滚动您自己的 NSError 说明您的应用程序不接受连接,因为它已经连接到客户端。

    查看NSError 的 iPhone 开发中心文档,了解如何填充它。

    【讨论】:

    • 你不能从返回类型为 void 的方法返回 nil(或任何东西,真的)。
    猜你喜欢
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 2012-06-23
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多