首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XCGLogger:对成员“日志”的模糊引用

XCGLogger:对成员“日志”的模糊引用
EN

Stack Overflow用户
提问于 2016-04-28 19:16:32
回答 2查看 1.1K关注 0票数 2

试图设置XCGLogger和接收错误:

对成员“日志”的模糊引用

我看到这个问题已经是已引发了,但我不清楚解决方案。

根据安装指南,将这个全局常量添加到AppDelegate.swift中:

代码语言:javascript
复制
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?
    let log = XCGLogger.defaultInstance()

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        log.setup(.Debug, showThreadName: true, showLogLevel: true, showFileNames: true, showLineNumbers: true, writeToFile: nil, fileLogLevel: .Debug)  
        return true
    }

然后在单个源文件中:

代码语言:javascript
复制
import XCGLogger
log.debug("A debug message")

正确的用法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-28 20:17:39

这个问题相当简单。如果在log中声明AppDelegate,则生成一个实例变量。要访问它,您必须作为实例变量访问它:

代码语言:javascript
复制
(UIApplication.sharedApplication().delegate as! AppDelegate).log.debug("test")

如果您想让log在任何地方都可以访问,就必须使它成为一个全局常量:

在AppDelegate中,将全局常量声明为默认的XCGLogger实例。

代码语言:javascript
复制
let log = XCGLogger.defaultInstance()

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?

(不需要在AppDelegate文件中声明它,您基本上可以将它放在代码的任何地方)

或者让它成为static

代码语言:javascript
复制
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    static let log = XCGLogger()

并使用以下方法访问:

代码语言:javascript
复制
AppDelegate.log.debug(...)

为了解释这个矛盾引用,有一个名为log的数学函数,malloc.h文件中也有一个log函数。因为您是作为第一个参数传递一个String,而且这两个函数都不是匹配的,所以编译器警告您,它不知道要使用哪一个函数。

票数 4
EN

Stack Overflow用户

发布于 2016-07-29 08:22:33

此外,我认为最好创建全局常量文件并创建类似的内容(如果您已经声明了登录AppDelegate):

代码语言:javascript
复制
let LOG = (UIApplication.sharedApplication().delegate as! AppDelegate).log

然后简单地使用LOG.error("error")

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36923620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档