現時点での目的と迅速な学習。私はObj Cの初期化プログラムと便利な初期化プログラムを理解しており、Factoryメソッドを理解しています。私はまた、 "コンストラクタ"という言葉を聞いたことがありますが、私は彼らが工場のメソッドや初期化子とどう違うか分かりません。 「コンストラクタ」は初期化子を参照する別の方法ですか?ありがとうファクトリメソッドとコンストラクタの相違点
2
A
答えて
3
違いはありません。
インスタンスオブジェクトを作成するクラスメソッドは、長年にわたり、コンビニエンスアロケータまたは - めったにコンストラクタと呼ばれていませんでした。コンビニエンスアロケータという用語は、インスタンスオブジェクトがオートリリースされたときに使用されていましたが、ARCでは重要ではありませんでした。
NSString *string1 = [NSString string]; // autoreleased
NSString *string2 = [NSSString new]; // ownership transfer
基本的に彼らは+alloc
と-init…
プラスの組み合わせである - -autorelease
- それは便利アロケータであるとき。 2年前(またはそれ以前)には、ファクターメソッドと呼ばれるようになりました。
ただし、名前については忘れてください。彼らが何をするのか、なぜ存在するのか考えてみましょう。古典的な+alloc
- -init…
の組み合わせでは、クラスは決める機会がなく、-init
の引数に依存するため作成するサブタイプはありません。例を挙げましょう:NSSArray
には、2つの(プライベート)サブクラス_NSSmallArray
と_NSBigArray
があります。 -initWithEstimatedSize:
メソッドで容量として指定した推定サイズからサブタイプを選択したいとします。 +alloc
はどのように選択し、どのサブタイプを選択して割り当てることができますか?どのような引数をinitメソッドに渡すかはわかりません。
コンストラクタまたは便利なアロケータを使用すると、オブジェクトの割り当てをパラメータ化できます。 +newArrayWithEstimatedSize:
または+arrayWithEstimatedSize:
はその問題を解決できます。
今、ファクトリメソッドと呼ぶ必要があります。ごめんなさい。物語は同じです。
関連する問題
- 1. Javascriptのregexpリテラルとコンストラクタの相違点
- 2. Android Studio:BaseAdapterとArrayAdapterの相違点はコンストラクタの点で
- 3. IE標準、相違点および相違点の相違点
- 4. importとconstとの相違点とcommonjsでの相違点
- 5. =と:=の相違点
- 6. コンストラクタ外の変数のインスタンス化との相違点
- 7. PHPUnitとPHPSpecの相違点と相違点
- 8. ArrayListコンストラクタ間のパフォーマンスと学習の相違点
- 9. モナドの型コンストラクタとリターン関数の相違点(Haskell)
- 10. CBUUIDとNSUUIDの相違点
- 11. NSTimeZoneとGMTの相違点
- 12. ListViewとArrayListの相違点
- 13. pictureBox.Update()とpictureBox.Refresh()の相違点
- 14. ApplicationContextInitializerとBeanFactoryPostProcessorの相違点
- 15. システムとshell_execの相違点
- 16. AsyncSocketとAsyncUdpSocketの相違点
- 17. .textと.get_text()の相違点
- 18. plt.close()とplt.clf()の相違点
- 19. `BeginSubscribeToStreamingNotifications`と` SubscribeToStreamingNotifications`の相違点
- 20. Delegate.InvokeとDelegateの相違点
- 21. InternalResourceViewResolverとUrlBasedViewResolverの相違点
- 22. tf.nn.convolutionとtf.nn.conv2dの相違点
- 23. Backbone.Layout.extendとBackbone.view.extendの相違点
- 24. JavaとMacOSの相違点
- 25. Yocto:CORE_IMAGE_EXTRA_INSTALLとIMAGE_INSTALLの相違点
- 26. window.someRandomVarとsomeRandomVarの相違点
- 27. CDRとxDRの相違点
- 28. gst_bus_add_watch()とg_signal_connect()の相違点
- 29. EventStreamとEventBusの相違点
- 30. System.Threading.Tasks.DataflowとMicrosoft.Tpls.Dataflowの相違点
OPが実際にSwift情報を探していたのかどうかは分かりませんが、Swiftが[convenience _initializer_]という用語を正式化したことに気付く価値があります(https://developer.apple.com/library)。 /prerelease/content/documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.html#//apple_ref/doc/uid/TP40014097-CH18-ID216)、Swiftの「イニシャライザ」は、ObjCで「コンストラクタ」が使用されている機能をカバーしています。 –
SwiftとObjective-Cというタグが付けられています。 Swiftの概念はObjective-Cからレンダリングされているため、Objective-Cで記述することができます。残りは、最後の3つの段落で言及されているように表現されています。 –