静态类函数:实例成员不能用于类型
Posted
技术标签:
【中文标题】静态类函数:实例成员不能用于类型【英文标题】:static class functions : Instance member cannot be used on type 【发布时间】:2018-08-20 07:38:40 【问题描述】:这个问题我已经有一段时间了。 我无法调用其中包含实例成员的静态函数。 我得到错误:
实例成员“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()
【问题讨论】:
静态(类型)方法在类型上调用,而不是在特定实例上。如果您致电Tracker.dispatch()
,您希望发生什么?
我知道在类型上调用了一个静态方法。我不理解无法在静态方法中调用的实例成员的错误。为什么会出现这个错误
是否有解决方法或正确的方法来继续
【参考方案1】:
带有前缀关键字静态或类的函数不能调用实例成员。这种函数只能使用静态或类成员。
这里你应该使用 static let matomoTracker = MatomoTracker()
或者如果您想稍后分配 matomoTracker,请使用
静态变量 matomoTracker:MatomoTracker?
如果你想了解更多关于静态和类的信息,请访问下面的 li
https://docs.swift.org/swift-book/LanguageGuide/Methods.html
https://docs.swift.org/swift-book/LanguageGuide/Methods.html
【讨论】:
以上是关于静态类函数:实例成员不能用于类型的主要内容,如果未能解决你的问题,请参考以下文章