静态类函数:实例成员不能在类型上使用

时间:2018-08-20 07:38:41

标签: swift function static

我已经有一段时间了。 我无法在其中包含实例成员的情况下调用静态函数。 我收到错误消息:

  

实例成员'matomoTracker'不能用于'Tracker'类型

class Tracker {

    let matomoTracker:MatomoTracker
    var isAllowed: Bool? //to implement based on UserSessions

    required init(id: String, url: String, isAllowed: Bool) {
        matomoTracker = MatomoTracker(siteId: id, baseURL: URL(string: url)!)
        matomoTracker.isOptedOut = isAllowed
    }

    public func track(category: String, eventDescription: String) {
        matomoTracker.track(eventWithCategory: "category", action: "action", name: nil, number: nil, url: nil)
    }

    static func dispatch() {
        Tracker.matomoTracker.dispatch()
    }

    static func startSession() {
         Tracker.matomoTracker.startNewSession()
    }
}

enter image description here

1 个答案:

答案 0 :(得分:0)

具有前缀关键字“静态”或“类”的

函数无法调用实例成员。这种功能只能使用静态或类成员。

在这里您应该使用 static let matomoTracker = MatomoTracker() 或者如果您想稍后分配matomoTracker,请使用

静态变量matomoTracker:MatomoTracker?

如果您想了解更多有关static和class的信息,请访问li

https://docs.swift.org/swift-book/LanguageGuide/Methods.html

https://docs.swift.org/swift-book/LanguageGuide/Methods.html