我是 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] 删除。
我来说两句