如何使用objective-c向接口公开自定义初始化实现?
Posted
技术标签:
【中文标题】如何使用objective-c向接口公开自定义初始化实现?【英文标题】:How do I expose custom init implememntation to interface using objective-c? 【发布时间】:2020-02-25 07:46:46 【问题描述】:我简单地定义了这样的 Swift 协议:
@objc protocol MobileKeyable
var assaAbloyLockServiceCode: Int get
然后我在我的objective-c类中使用它:
- (id)initWithComposition: (id<MobileKeyable>)composition
self = [super init];
if (self)
_lockServiceCodes = @[@([composition assaAbloyLockServiceCode])];
return self;
然后我想像这样在 Swift 中初始化该控制器:
let composition = //here MobileKeyable
MobileKeysController(composition: composition)
所以我需要将该初始化程序暴露给 Objective-c 接口:
#import "MyProject-Swift.h"
@interface MobileKeysController : NSObject <MobileKeysManagerDelegate>
- (instancetype) initWithComposition: (id<MobileKeyable>)composition;
@end
但在这里我有一个错误:MyProject-Swift.h file not found
。为什么?
【问题讨论】:
【参考方案1】:也许 Xcode 试图避免一些循环......只是假设。试试转发声明
@protocol MobileKeyable;
@interface MobileKeysController : NSObject <MobileKeysManagerDelegate>
- (instancetype) initWithComposition: (id<MobileKeyable>)composition;
@end
【讨论】:
以上是关于如何使用objective-c向接口公开自定义初始化实现?的主要内容,如果未能解决你的问题,请参考以下文章
从 Objective-C 向 Swift 公开一个常量变量
Objective-C - 给定一个 UINib 实例,我如何初始化我的自定义 UIView?
无法从我的 Objective-C 代码向 Google Analytics/Firebase 发送自定义事件