Rumah > Soal Jawab > teks badan
最近看很多开发的书籍和文章都用这样的一种写法:
阅读来源:http://www.cocoachina.com/swift/20151207/14584.html
书籍阅读来源:《iOS开发指南,从零基础到App Store上架第三版》中的10.4.1的例子
.....
这个是最近的文章
最丑陋方法(Swift皮,Objective-C心)
TheOneAndOnlyKraken {
class var sharedInstance: TheOneAndOnlyKraken {
struct Static {
static var onceToken: dispatch_once_t = 0
static var instance: TheOneAndOnlyKraken? = nil
}
dispatch_once(&Static.onceToken) {
Static.instance = TheOneAndOnlyKraken()
}
return Static.instance!
}
}
关于这种的写法,我思考了很久(也有一周以上,也有看其他资料,还是没理解透彻)
我主要不理解的一个逻辑关系是:
(类中声明类并创建内部类。应该是这样,有点绕)
1、在定义的TheOneAndOnlyKraken类中再定义一个TheOneAndOnlyKraken类型的sharedInstance类,这种嵌套,如果创建了一个sharedInstance,那这个sharedInstance和TheOneAndOnlyKraken的逻辑关系该怎么理解比较通俗易懂?有点死循环的感觉。
2、在sharedInstance类中定义了一个Static结构体,这个结构体中声明了一个TheOneAndOnlyKraken类型的变量instance。最后返回了这个instance变量。这instance和定义的两个类之间的逻辑关系又是如何理解比较通俗易懂。
PS:我是个初学者,对这些声明都比较熟悉,只是其中的逻辑结构不太理解,死循环。个人觉得如果纯粹记住这种写法(不确定是不是一种模板),不理解,都后面写程序中理解不透其中的逻辑结构,那就知其然不知其所以然。
暂时不理解这种逻辑关系,看网站上一大堆资料,貌似都没有好的解释。
求指导!
给我你的怀抱2017-04-28 09:06:48
Kata kunci
class
di sini tidak mentakrifkan kelas bersarang, tetapi menunjukkan bahawa sharedInstance
ialah atribut kelas Sudah tentu, shareInstance
tidak menyatakan dengan tegas computed property
(atribut dikira) yang disebutkan di atas. tetapi get-only property
(atribut baca sahaja). getter
ditakrifkan dalam struct
(kaedah yang mengembalikan atribut) atribut baca sahaja ini. Terdapat dua atribut statik di dalam struct
ini onceToken
Apabila digunakan, dispatch_once
ialah fungsi yang digunakan untuk melaksanakan kaedah sekali dalam GCD Anda hanya perlu memahami bahawa penutupan yang diluluskan dalam dispatch_once
hanya akan dilaksanakan sekali dalam penutupan, Itu sahaja dispatch_once
. Ayat ini memulakan tika Static.instance = TheOneAndOnlyKraken()
, kemudian menetapkan tika ini kepada atribut statik TheOneAndOnlyKraken
dalam struktur Static
, dan akhirnya mengembalikan instance
, iaitu, tika Static.instance!
dikembalikan Sebabnya ialah TheOneAndOnlyKraken
penyataan ini hanya akan dilaksanakan sekali, dan ia akan memulangkan secara langsung kejadian yang dijana pada masa hadapan, jadi singleton boleh dijamin. Adakah ini jelas? Static.instance = TheOneAndOnlyKraken()
private let instance = SomeClass()
class SomeClass {
public class var singleInstance: SomeClass {
return instance
}
}
//获取单例
let someClass = SomeClass.singleInstance
漂亮男人2017-04-28 09:06:48
sharedInstance bukan kelas, tetapi sifat terkira statik Jenis sifat ini ialah TheOneAndOnlyKraken. Anda boleh menganggapnya sebagai kaedah statik dengan 0 parameter >
dalam kurungan kerinting ialah kod untuk sifat pengiraan Bahagian yang mencipta contoh dijamin akan dilaksanakan sekali sahaja dengan dispatch_sekalistruct ...... return Static.instance!
PHPz2017-04-28 09:06:48
Anda boleh merujuk kepada apa yang ditulis oleh blog asing tentang singleton yang pantas