无法通过委托访问协议方法

时间:2018-10-23 17:40:49

标签: objective-c swift protocols

当通过委托访问协议方法时,出现以下错误: “选择器'lostConnection'的未知实例方法”

快速协议:

@objc protocol GameDelegate {
    func lostConnection()
}

目标C游戏文件

//game.h

@protocol GameDelegate;
@interface SSStreamManager : NSObject 

@property (assign) id<GameDelegate> delegate

@end

调用协议方法时出错

[self.delegate lostConnection]; // No known instance method for selector 'lostConnection'

1 个答案:

答案 0 :(得分:0)

这变得荒谬,因为您一直拒绝显示任何真实代码。因此,我将向您展示一些真实的代码。这是一个iOS应用项目中的三个文件:

ViewController.swift

import UIKit
@objc protocol GameDelegate {
    func lostConnection()
}
class ViewController: UIViewController {
}

Thing.h

#import <Foundation/Foundation.h>
@protocol GameDelegate;
@interface Thing : NSObject
@property (assign) id<GameDelegate> delegate;
@end

Thing.m

#import "Thing.h"
#import "MyApp-Swift.h"
@implementation Thing
- (void) test {
    [self.delegate lostConnection];
}
@end

可以编译。去吧,做同样的事情。