MCSessionDelegate需要类符合NSObjectProtocol

问题描述:

我试图从Apple使用MultipeerConnectivity库,但我的类不会停止抛出错误“类型LocalClient不符合NSObjectProtocol”。我是否错过了会导致此错误的任何内容?MCSessionDelegate需要类符合NSObjectProtocol

import Foundation 
import MultipeerConnectivity 

class LocalClient : MCSessionDelegate { 
    var availableServers : [Int] 
    var session : MCSession 
    var peerID : MCPeerID 
    var browser : MCBrowserViewController 

    init(name : String) { 
     peerID = MCPeerID(displayName: name) 

     session = MCSession(peer: peerID) 
     session.delegate = self 

     browser = MCBrowserViewController(serviceType: "JoinGame", session: session) 
    } 

    func session(session: MCSession!, peer peerID: MCPeerID!, didChangeState state: MCSessionState) { 

    } 

    func session(session: MCSession!, didReceiveData data: NSData!, fromPeer peerID: MCPeerID!) { 

    } 

    func session(session: MCSession!, didStartReceivingResourceWithName resourceName: String!, fromPeer peerID: MCPeerID!, withProgress progress: NSProgress!) { 

    } 

    func session(session: MCSession!, didFinishReceivingResourceWithName resourceName: String!, fromPeer peerID: MCPeerID!, atURL localURL: NSURL!, withError error: NSError!) { 

    } 

    func session(session: MCSession!, didReceiveStream stream: NSInputStream!, withName streamName: String!, fromPeer peerID: MCPeerID!) { 

    } 

} 

编辑:格式。

MCSessionDelegate协议源自NSObjectProtocol。 因此,你的类应该是NSObject子类,所以它继承了所有NSObjectProtocol方法:

class LocalClient : NSObject, MCSessionDelegate { } 

这也需要调用super.init()(值后就一直 分配给所有属性):

init(name : String) { 
    peerID = MCPeerID(displayName: name) 
    session = MCSession(peer: peerID) 
    availableServers = [] 
    browser = MCBrowserViewController(serviceType: "JoinGame", session: session) 

    super.init() 

    session.delegate = self 
} 
+0

谢谢。那个错误把我抛弃了。 – 2014-08-28 17:27:32