我怎样才能创建一个快捷的自定义类是类型的Array
? 确切的说,我有一个自定义类类型的Car
,现在我想创建一个单是数组Car
秒。 (因为我希望能够从任何地方访问它在我的应用程序)。
我的解决方法是定义我的单身作为NSMutableArray
。 但我看到了导致我的代码我的一些问题。 所以,我希望将它定义为迅速阵列。 我该怎么做?
我的代码是现在:
class MyCars: NSMutableArray {
class var sharedInstance: MyCars {
struct Static {
static var instance: MyCars?
static var token: dispatch_once_t = 0
}
dispatch_once(&Static.token) {
Static.instance = MyCars()
}
return Static.instance!
}
}
要创建的单阵列Car
,你并不需要创建一个新类-只是一个静态成员的结构:
struct MyCars {
static var sharedInstance = Array<Car>()
}
需要注意的是sharedInstance
被初始化一次-读这个答案为更多信息
附录
如果你想使用MyCars
引用数组Car
,你可以定义一个typealias和含有单,如结构使用不同的名称:
typealias MyCars = Array<Car>
struct Singleton {
static var myCars = MyCars()
}
据我了解,单身代表一个类或结构,这只能有一个实例,直到永远。 即使有人试图实例单身的新副本,他们将与指针风回的唯一实例。 (我从大书呆子牧场指南到iOS编程这个想法,但它似乎没有争议)。 我不认为上面提出的结构解决方案符合这一标准。 例如,在一个操场上创建的建议结构(我已经取代“串”的“车”型类型,使测试更加简单):
struct MyCars {
static var sharedInstance = Array<String>()
}
然后初始化结构,并显示初始化“花”:
MyCars.sharedInstance = ["Granada", "Pinto", "Chevette"]
println( MyCars.sharedInstance )
// prints all three car names
现在尝试创建数据的副本,并显示它的工作原理,然后修改副本:
var myCars = MyCars.sharedInstance
println( myCars )
// the above prints all three cars
myCars.append("Gremlin")
难道这两个变量指向不同的集合? 测试:
println( MyCars.sharedInstance )
// the above prints three cars
println( myCars )
// the above prints four cars
所以,在游乐场的环境你不使用结构与静止无功拿到单。 这是不幸的,因为它本来是实行单阵列非常简单的方法。 我在这个问题很大的困难。 的部分解决方案已在此已经阐明了岗位 。 在这个解决方案你去参考使用单标(所以单是有点类似数组)。 但其它阵列的特征(例如正常分配)丢失。 也就是说,你不能使用下列内容:
MySingletonClass.sharedInstance = [ “格林纳达”, “平托”, “克尔维特”]
注:我是很新,雨燕; 上述说法不携带多的权力。 有变化,单身是如何定义将会从雨燕1.1至1.2雨燕以及这些变化归纳在这里 。 使用雨燕1.1定义单身的机制是混乱的,但马丁街有一个非常可读的,一步一步的发展阐述了这里 。
祝好运! - 乔治