如何在 Objective-C 中使用 swift 协议实现?

阿列克谢·季莫申科

我是 iOS 新手。我有一个库,我在我的应用程序中使用了 Swift 和 Objc 文件(我已经正确连接了我的库,包括 *-Swift.h 文件)。

所以,我的库有这样的结构

工厂

import Foundation

@objc public class Factory : NSObject{
    @objc public func create() -> ModelProtocol
    {
        return FirstModel()
    }
}

模型协议

import Foundation

@objc public protocol ModelProtocol
{
    func foo()
}

第一个模型

import Foundation

public class FirstModel : NSObject, ModelProtocol
{
    public func foo() {
        //Do some things here
    }
}

当我尝试在 Swift 方面使用这个工厂时,一切正常

import Foundation
import Lib

class TestClass {
    
    public init(){}
    
    func boo()
    {
        let factory = Factory()
        let _: ModelProtocol = factory.create()
    }
}

但是当我尝试在 Objc 方面做同样的事情时,我得到了一个错误

Use of undeclared identifier 'ModelProtocol'
#import <Foundation/Foundation.h>
#import "Lib-Swift.h"


@implementation ViewController : NSObject

- (void)foo {
    Factory *factory = [Factory new];
    ModelProtocol *protocol = [factory create];
}

@end

我还将这两个项目(lib 和应用程序)放在我的驱动器上https://drive.google.com/drive/folders/1-DMYMhTqTqpgHcp31DNVby7US46OXUYM?usp=sharing

如何解决?

苏丹

实际上,您唯一的问题是 Objective-C 中协议的语法不正确。正确地,符合协议的类型应该这样写:

id<ModelProtocol> protocol = [factory create];

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Objective-C中使用Swift结构

如何在Swift项目中使用Objective-C CocoaPods

如何在Objective-C中使Swift String枚举可用?

如何在Swift中使用Objective-C枚举

Swift中inout参数的方法如何在Objective-C中使用?

在Objective-C中使用Swift协议

在Swift中实现Objective C协议

如何在Swift中使用具有只读属性的Objective-C协议

如何在框架中使用Swift扩展Objective-C类?

在我的Swift应用程序中使用我的XPC服务中的Objective-C协议

在Obj-C中使用Swift协议的实现

在Swift类中实现Objective-C协议

如何在SwiftPM的Objective-C模块中使用swift模块?

使用Objective-C属性获取器实现Swift协议

如何在我的Swift项目中使用Objective-C项目

如何在框架的Objective-C文件中使用Swift类?

在Objective C和Swift中部分实现协议

将实现协议的Swift类导入Objective-C类

如何在Swift中使用Objective-C NSMeasurement类别方法?

实现Swift协议的Objective-C类的弱属性

如何在Objective-C和Swift中实现“ didSelectButtonInCellAtIndexPath:”?

在Swift中使用通用协议实现委托

如何在Swift中使用名称为Objective-C的类作为关键字

我们如何在swift中使用协议实现并发线程?

如何在 Objective C 中使用 CallKit

在 Swift 中实现 Objective-C 协议

如何在 swift 类中实现目标 C 协议?

如何在没有桥接头的情况下在 Swift 中使用 Objective-C 框架?

如何在 Objective-C 代码中使用导入的 Swift 协议和类?