在 class 的实例中使用 class 变量
Using class variables within an instance of a class
我正在尝试使用 Swift 创建一个 class 的实例(class 是所需的类型)但是当我初始化实例时似乎class var 未应用于新实例。我确定有一个 init 调用或我缺少的东西,所以任何帮助都会非常有用。
class Person: NSObject {
private struct personNameStruct { static var _personName: String = "" }
class var personName: String
{
get { return personNameStruct._personName }
set { personNameStruct._personName = newValue }
}
}
var testPerson: Person
testPerson.personName = "Foo" //"'person' does not have a member named 'personName'"
如果您使用 class 名称 person
而不是实例名称访问 personName
变量,它在 Playground 中对我有用:person.personName = "Foo"
.
这是因为 Swift 中的 class 变量类似于 Java 和 C# 等语言中的静态变量,因为它在 [=] 的所有实例之间共享20=]。如果您只想在 class 中使用 属性,则不应将其声明为 class var
,而应将其声明为 var
.
通过对实例的引用来引用实例成员。
class 成员是通过对 class 的引用来引用的。
因此,例如:
class Dog {
class var whatDogsSay : String {
return "Woof"
}
func bark() {
println(Dog.whatDogsSay)
}
}
要让狗吠,请创建一条狗 实例 并告诉它吠叫:
let d = Dog()
d.bark()
想知道狗怎么说,跟狗说话class:
let s = Dog.whatDogsSay
我正在尝试使用 Swift 创建一个 class 的实例(class 是所需的类型)但是当我初始化实例时似乎class var 未应用于新实例。我确定有一个 init 调用或我缺少的东西,所以任何帮助都会非常有用。
class Person: NSObject {
private struct personNameStruct { static var _personName: String = "" }
class var personName: String
{
get { return personNameStruct._personName }
set { personNameStruct._personName = newValue }
}
}
var testPerson: Person
testPerson.personName = "Foo" //"'person' does not have a member named 'personName'"
如果您使用 class 名称 person
而不是实例名称访问 personName
变量,它在 Playground 中对我有用:person.personName = "Foo"
.
这是因为 Swift 中的 class 变量类似于 Java 和 C# 等语言中的静态变量,因为它在 [=] 的所有实例之间共享20=]。如果您只想在 class 中使用 属性,则不应将其声明为 class var
,而应将其声明为 var
.
通过对实例的引用来引用实例成员。
class 成员是通过对 class 的引用来引用的。
因此,例如:
class Dog {
class var whatDogsSay : String {
return "Woof"
}
func bark() {
println(Dog.whatDogsSay)
}
}
要让狗吠,请创建一条狗 实例 并告诉它吠叫:
let d = Dog()
d.bark()
想知道狗怎么说,跟狗说话class:
let s = Dog.whatDogsSay