[英]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.