在 obj C 项目上调用的 iOS Swift 方法

Posted

技术标签:

【中文标题】在 obj C 项目上调用的 iOS Swift 方法【英文标题】:iOS Swift method called on obj C project 【发布时间】:2017-01-16 04:51:33 【问题描述】:

我正在与imglyKit swift 3 library合作

使用 swift 示例,我可以使用 [从任何地方调用,共享实例?] 设置自定义过滤器: PhotoEffect.allEffects = effects

and effects 是一个数组,

private let effects: [PhotoEffect] = [
    PhotoEffect(identifier: "None", ciFilterName: nil, lutURL: nil, displayName: "None", options: nil),
    PhotoEffect(identifier: "K1", lutURL: Bundle(for: PhotoEffect.self).url(forResource: "K1", withExtension: "png"), displayName: "K1"),
    PhotoEffect(identifier: "K2", lutURL: Bundle(for: PhotoEffect.self).url(forResource: "K2", withExtension: "png"), displayName: "K2"),
    PhotoEffect(identifier: "K6", lutURL: Bundle(for: PhotoEffect.self).url(forResource: "K6", withExtension: "png"), displayName: "K6"),
    PhotoEffect(identifier: "Dynamic", lutURL: Bundle(for: PhotoEffect.self).url(forResource: "Dynamic", withExtension: "png"), displayName: "Dynamic"),
    PhotoEffect(identifier: "Fridge", lutURL: Bundle(for: PhotoEffect.self).url(forResource: "Fridge", withExtension: "png"), displayName: "Fridge")
]

所以这个带有“共享实例”的配置可以在代码中的任何地方工作。

现在的问题是,如何访问 pod “imglykit” 的共享实例以设置此属性?

这里是对objective C的测试,但只是一个实例,如何与已经创建的对象链接?

    IMGLYPhotoEffect *photoEffect = [[IMGLYPhotoEffect alloc]initWithIdentifier:@"None" ciFilterName:nil lutURL:nil displayName:@"None" options:nil];

【问题讨论】:

【参考方案1】:

allEffectsIMGLYPhotoEffect 类(在 Swift 中称为 PhotoEffect 类)的类方法。

试试这个:

IMGLYPhotoEffect.allEffects = effects;

以下是在 Objective-C 中找出调用 swift API 的正确方法的提示:如果您在 Objective-C 项目中 Cmd-单击符号 IMGLYPhotoEffect,它将带您到生成的标题Objective-C 中的类。

【讨论】:

以上是关于在 obj C 项目上调用的 iOS Swift 方法的主要内容,如果未能解决你的问题,请参考以下文章

iOS Emoji编解码(OBJ-C/Swift)

如何在 IOS/SWIFT/OBJ-C/CORDOVa 上获取手指 ID(哪个手指用于触摸 ID)或唯一触摸 ID

Obj-C 的 Swift 桥接头

Obj-C 的 Swift 桥接头

快速调用objective-c类方法

不在导航栏上制作栏按钮项目和标题(iOS,Swift)