gpt4 book ai didi

objective-c - 当 Swift 桥接头导入导入 Hopscotch-Swift.h 本身的文件时,如何防止循环引用

转载 作者:行者123 更新时间:2023-11-30 12:21:16 27 4
gpt4 key购买 nike

我正在将 Swift 集成到一个现有的大型 Objective C 项目中,并且遇到了我认为是循环引用的情况。

相关类如下:

Objective-C Controller

#import "Hopscotch-Swift.h"

@interface MyController : UIViewController<MyProtocol>
...
@end

Swift 协议(protocol)

@objc protocol MyProtocol: NSObjectProtocol {
...
}

桥接 header

#import "MyController.h"

此代码无法编译,因为 Hopscotch-Swift.h文件不会生成。

我认为这是由于循环引用错误造成的,因为我可以导入 Hopscotch-Swift.h进入未包含在 Hopscotch-Bridging-Header.h 中的 Objective C header 而且效果很好。

此问题有解决方法吗?还是我应该向 Apple 提交雷达报告?

最佳答案

根据您的情况,前向声明应该有效。

在你的.h中:

@protocol MyProtocol;

@interface MyController : UIViewController<MyProtocol>

@end

在你的.m中:

#import“HopScotch-Swift.h”

来自How can I add forward class references used in the -Swift.h header?以及 Swift 互操作性指南:

If you use your own Objective-C types in your Swift code, make sure to import the Objective-C headers for those types prior to importing the Swift generated header into the Objective-C .m file you want to access the Swift code from.

关于objective-c - 当 Swift 桥接头导入导入 Hopscotch-Swift.h 本身的文件时,如何防止循环引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44761658/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com