2

我有一个混合的 Xcode 项目。我的 appDelegate 是用 Objective-C 编写的,而我的控制器部分是用 Swift 编写的。是否可以在该项目中使用 XCGLogger?如果是,我如何在 appDelegate 中初始化 XCGLogger(例如- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions)?

4

1 回答 1

0

我也发现并遇到了同样的问题,想合并到一个混合的 Swift+Objective-C 项目中。幸运的是,我发现这个 PR https://github.com/DaveWoodCom/XCGLogger/pull/122有助于解决问题。

但是为了检查他的 PR,我们需要做一些改变:

@objc public class XCGLogWrapper: NSObject {
    @objc public static func log(_ level: LogLevel = LogLevel.debug, functionName: String = #function, fileName: String = #file, lineNumber: Int = #line, logMessage: String) {}

level注意标签参数的省略。

===

解释:

所以从这个静态函数XCGLogWrapper

static XCGLogWrapper.log(_:functionName:fileName:lineNumber:logMessage:)

将在 Objective-C 中翻译成这个:

[XCGLogWrapper log:level functionName: @(__PRETTY_FUNCTION__) fileName: @__FILE__ lineNumber: __LINE__ logMessage: message ]

===

有关更完整的答案,请查看我对 PR https://github.com/DaveWoodCom/XCGLogger/pull/122#issuecomment-468136786的评论

希望能帮助到你!

于 2019-03-01T04:34:10.077 回答