我正在将Swift集成到一个大型的现有Objective C项目中,并且遇到了我认为是循环引用的问题.
有问题的课程如下:
#import "Hopscotch-Swift.h"
@interface MyController : UIViewController<MyProtocol>
...
@end
Run Code Online (Sandbox Code Playgroud)
@objc protocol MyProtocol: NSObjectProtocol {
...
}
Run Code Online (Sandbox Code Playgroud)
#import "MyController.h"
Run Code Online (Sandbox Code Playgroud)
此代码无法编译,因为该Hopscotch-Swift.h文件不会生成.
我认为这是由于循环引用错误,因为我可以导入Hopscotch-Swift.h到未包含的目标c标头中,Hopscotch-Bridging-Header.h并且它可以正常工作.
是否有针对此问题的解决方法,还是应该向Apple提交雷达?
我正在将Swift代码集成到一个大型的Objective-C项目中,但是当我的Swift代码引用Objective-C类时,我遇到了问题.例如,假设我有:
MyTableViewControllerDeletionWorkflow我声明了一个Swift类如下:
class DeletionVC: MyTableViewController {
let deleteWorkflow: DeletionWorkflow
...
}
Run Code Online (Sandbox Code Playgroud)
如果我现在尝试通过导入ProjectName-Swift.hObjective-C代码来使用这个类,我会得到两个MyTableViewController和未定义的符号错误DeletionWorkflow.
我可以通过导入DeletionWorkflow.h和导入MyTableViewController.h之前修复单个源文件中的问题,ProjectName-Swift.h但这不能扩展到我希望我的Swift和Objective-C经常进行交互的大型项目.
有没有办法添加前向类引用,ProjectName-Swift.h以便当我尝试在我的应用程序中使用Objective-C代码中的Swift类时不会发生这些错误?
我有一个项目使用Swift生成的Bridging Header并正确设置项目(名称中没有空格,使用模块,在我的.mm文件中预先声明Swift类,删除派生数据,进行干净重建等等). ).Bridging Header生成正常,但自动生成的-Swift.h中有错误.更糟糕的是,这些错误发生在AppDelegate和ViewController的生成(在项目创建 - Swift)版本中,通常可以正常编译.-Swift.h中的错误是:
@interface AppDelegate : UIResponder <UIApplicationDelegate>@interface ViewController : UIViewController我搜索了Stack Overflow和网络,找不到解决这个问题的任何答案.还有其他人有这个吗?或者,有没有办法可以标记我的AppDelegate和ViewController类,因此Xcode 不会尝试为那些Swift类创建Objective-C存根,因为我实际上并不需要它们?
我XLPagerTabStrip在项目中使用pod
我有一个桥接头用于其他目的,以从快速集成到目标c myproject-swift.h
我无法构建项目,并且此错误总是弹出:
找不到'ParentViewController'的超类'ButtonBarPagerTabStripViewController'的接口声明
这是我的控制器
import Foundation
import UIKit
import XLPagerTabStrip
class ParentViewController: ButtonBarPagerTabStripViewController {
override func viewDidLoad() {
tabStripStyle()
super.viewDidLoad()
containerView.isScrollEnabled = false
}
}
Run Code Online (Sandbox Code Playgroud)
我到处都看到过这个问题,但是这里还没有回答: 自动生成的Swift桥接头中的“找不到接口声明”