相关疑难解决方法(0)

不能在Objective-C中使用Swift类

我尝试Swift在我的app中集成代码.我的应用程序是写入的Objective-C,我添加了一个Swift类.我做了这里描述的所有事情.但我的问题是Xcode没有创建-Swift.h文件,只有桥接头.所以我创造了它,但它实际上是空的.我可以在Swift中使用我所有的ObjC类,但我不能这样做.我标记了我的快速课程,@objc但没有帮助.我现在能做什么?

编辑:Apple说:"当您将Swift代码导入Objective-C时,您依靠Xcode-generated头文件将这些文件暴露给Objective-C.[...]此标题的名称是您的产品模块名称,然后添加" -Swift.h"."

现在,当我想导入该文件时,它会出错:

    //MainMenu.m

    #import "myProjectModule-Swift.h" //Error: 'myProjectModule-Swift.h' file not found

    @implementation MainMenu
Run Code Online (Sandbox Code Playgroud)

这是我的FBManager.swift文件:

@objc class FBManager: NSObject {

    var descr = "FBManager class"

    init() {
        super.init()
    }

    func desc(){
        println(descr)
    }

    func getSharedGameState() -> GameState{
        return GameState.sharedGameState() //OK! GameState is written in Objective-C and no error here
    }
}
Run Code Online (Sandbox Code Playgroud)

objective-c ios swift

251
推荐指数
12
解决办法
15万
查看次数

如何在Swift 4中使用#selector()处理@objc推理弃用?

我正在尝试将我的项目源代码从Swift 3转换为Swift 4.一个警告Xcode给我的是我的选择器.

例如,我使用常规选择器将按钮添加到按钮,如下所示:

button.addTarget(self, action: #selector(self.myAction), for: .touchUpInside)
Run Code Online (Sandbox Code Playgroud)

这是它显示的警告:

'#selector'的参数是指'ViewController'中的实例方法'myAction()',它取决于Swift 4中不推荐使用的'@objc'属性推断

添加'@objc'以将此实例方法公开给Objective-C

现在,点击Fix错误消息对我的函数执行此操作:

// before
func myAction() { /* ... */ }

// after
@objc func myAction() { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

我真的不想重命名我的所有函数来包含@objc标记,我假设没有必要.

如何重写选择器来处理弃用?


相关问题:

xcode swift swift4

129
推荐指数
3
解决办法
4万
查看次数

标签 统计

swift ×2

ios ×1

objective-c ×1

swift4 ×1

xcode ×1