簡體   English   中英

在Objective-C中,Factory Method和Convenience Initializer有什么區別?

[英]In Objective-C, what is the difference between a Factory Method and a Convenience Initializer?

所以每個對象都有默認的初始化方法-init

如果你需要用屬性實例化你的對象,你會寫類似的東西
-initWithProperty1:(Property1*)prop1 andProperty2:(Property2*)prop2

這將被稱為這樣:
[[SomeClass alloc]initWithProperty1:(Property1*)prop1 andProperty2:(Property2*)prop2]

我一直認為這被稱為工廠方法(這是正確的嗎?)

但后來我偶然發現了這個問題: 如何編寫Objective-C便利構造函數

看起來像“便利構造函數”和工廠方法一樣嗎? 但也許一個便利構造函數專門使用類方法作為初始化器? 所以看起來像一個方便的構造函數看起來像這樣:
+someClassWithProperty1:(Property1*)prop1 andProperty2:(Property2*)prop2 ,將被調用為:
[SomeClass someClassWithProperty1:(Property1*)prop1 andProperty2:(Property2*)prop2];

有人知道術語應該是什么嗎? 在這種情況下,“工廠方法”和“便利構造函數”這兩個術語是否相同?

“便利構造”曾經是Apple用於這個概念的官方術語; 然后他們開始稱它為“工廠方法” 它的本質沒有改變:它是一個創建實例的方法 initWith...不是工廠方法。

“方便初始化程序 ”是來自Swift的術語,而不是ObjC。

“指定的初始化程序”是不相關的,除非這種創建方法與任何其他*一樣,最終必須調用它。


*除了initWithCoder:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM