在 Swift 中接收 ObjC 常量

问题描述 投票:0回答:1

我喜欢在 Swift 中使用 ObjC 常量。

IronSource 广告网络建议像这样初始化横幅广告:

[IronSource loadBannerWithViewController:self size:ISBannerSize_SMART];

我使用 Swift,翻译如下:

IronSource.loadBanner(with: self, size: dont_know)

但是对于参数 ISBannerSize_SMART 我不知道该填写什么,因为对我来说没有任何作用。 ISBannerSize.ISBannerSize_SMART 不工作,ISBannerSize_SMART 不工作...

这就是 ObjC 源的样子。

//
//  ISBannerSize.h
//  IronSource

#import <Foundation/Foundation.h>

static NSString* const kSizeSmart = @"SMART";

#define ISBannerSize_SMART [[ISBannerSize alloc] initWithDescription:kSizeSmart width:0 height:0]

@interface ISBannerSize : NSObject
swift objective-c
1个回答
1
投票

ISBannerSize_SMART
不是常数。这是一个扩展为

的宏
[[ISBannerSize alloc] initWithDescription:kSizeSmart width:0 height:0]

此类宏不会导入到 Swift 中。 只有扩展为如下常量值的简单宏才会导入到 Swift 中:

#define SOME_CONSTANT 3.14

所以你需要将

[[ISBannerSize alloc] initWithDescription:kSizeSmart width:0 height:0]
翻译成 Swift,即类似

ISBannerSize(description: lSizeSmart, width: 0, height: 0)

你可以直接用这个作为

size
loadBanner
参数,也可以写一个
ISBannerSize
的扩展:

extension ISBannerSize {
    static var smart: ISBannerSize {
        ISBannerSize(description: lSizeSmart, width: 0, height: 0)
    }
}

用途:

IronSource.loadBanner(with: self, size: .smart)
© www.soinside.com 2019 - 2024. All rights reserved.