【问题标题】:Accessing global const CGFloat defined in an Objective-c .m file from Swift从 Swift 访问在 Objective-c .m 文件中定义的全局 const CGFloat
【发布时间】:2014-10-30 14:49:22
【问题描述】:

我在 .m 文件中定义了一些常量,我需要从我的 swift 代码中访问这些常量。它们的定义:

const CGFloat testValue = 40.0;

在我的其他objective-c .m 文件中,我可以使用extern 访问它们:

extern const CGFloat testValue

有没有一种等效的方法可以从 .swift 文件中访问这些常量?

【问题讨论】:

标签: ios swift xcode6 constants cgfloat


【解决方案1】:

extern 添加到您的bridging header 中,Swift 应该能够访问它。

这个简单的测试对我有用:

ObjCTest.m

#import <Foundation/Foundation.h>

const CGFloat testValue = 40.0;

ObjCSwiftBridgeTest-Bridging-Header.h

#import <Foundation/Foundation.h>

extern const CGFloat testValue;

ma​​in.swift

println(testValue);

输出

40.0

【讨论】:

  • 旁注:如果它是一个对象(例如字符串),我必须删除关键字“static”才能使其工作。
  • 这很奇怪,我在.h 中定义了我的,并通过桥接头导入了它,但它不起作用。在桥接头中明确地重新定义它可以修复它。你以为这就是进口的意义??看起来像一个错误。
  • 我只需要在 Xcode 7.3.0 中使用 extern。出于某种原因,Xcode 7.3.1 和 7.2.1 都可以正常工作。
【解决方案2】:

只需将var 声明放在类上方 - 它将成为一个全局变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 2016-03-04
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    相关资源
    最近更新 更多