2015-11-22 6 views
6

まず私はちょうどスウィフトで遊んで開始し、実際にそれで書かれたコードの多くが、チュートリアルのすべてを見ていないことを教えてみましょうスウィフトプライベートプロパティ/メソッドの使用は一般的ではありませんI私はInternalがデフォルトであることで、スウィフトは、3つのアクセス制御、PrivatePublicInternalを持って理解し、いくつかの他の言語と同じくらい、彼らはプライベート使用していない見てきました。はなぜすべての

私は少し混乱し、私は一般的なプログラミングの経験の多くを持っていないが、私の理解は、プログラムで使用すると、すべてがプライベートにするということだったが、あなたがしたいのパブリックプロパティとメソッドを作るという事実にもかかわらずです他のクラスに公開する

アップルドキュメント

からのアクセス制御のさまざまなレベルを提供することに加えて、スウィフト は、典型的なシナリオのデフォルトのアクセスレベルを提供 ことにより、明示的なアクセス制御のレベルを指定する必要がなくなります。あなた は、1台のターゲットアプリケーションを作成する場合確かに、あなたは、すべての明示的 アクセス制御のレベルを指定する必要はないかもしれません。私に

あなたは基本的に正しい、それらの値に他のクラスへのアクセス権を与えているデフォルト(Internal)としてすべてのプロパティ/メソッドを残すことで?

スウィフト/ココアではどうしてあなたのプログラムの他の部分にアクセスさせたくないプロパティに対してPrivateアクセサを使用することはほとんどありませんか?

誰かがとても親切で、概念アクセサーを一般的に説明することができますか?Swiftはこのように設計されていますか、私が上に作った前提で間違っていれば、 OOPの多くの経験と私は一般的なアクセサの概念を混乱させるかもしれません。

おかげ

アップデート:今日(2016年1月7日)私はiTunesで、分24:15Stanford大学が提供するコースDeveloping iOS 8 Apps with SwiftからMVCを適用する3 ビデオ#を見てPaul Hegartyはアクセス制御について語っています。私はそれを強く推奨します。スウィフトで

+1

私たちは 'private'を使用します。私たちは、あなたにそれについて教えていません。 –

+1

最も狭い可能性のあるアクセス制御を使用するあなたの直感は、IMHOでも適用されます。私はチュートリアルで見たスニペットが、このトピックに短い短期間を与えることは驚くことではありません。これは、より大きな実用アプリケーションで発生する傾向がある問題です。私が一貫して使用しているのは、ストアドプロパティとの直接的なやりとりが明らかに問題となる、いくつかのストアドプロパティによってサポートされている計算されたプロパティがある場合です。「プライベート」と表示されることがよくあります。しかし、要するに、私たちの多くは私たち自身のコードで 'private'を使っています。 – Rob

+0

@Robクラス内でのみ使用されるプロパティ(クラススコープ)を 'private'にし、残りを' internal'として残すのは良い方法でしょうか?この方法では、コードは少なくとも読みやすくなります。 –

答えて

8

アクセス制御は、同様に私を驚かせたものの一つだったので、あなただけではありません。 Swiftは、私が以前知っていたC++、Java、C#で使われているものとはかなり異なるパラダイムを使用しています。

スウィフトのアクセス制御はクラスのが、ソースファイルとモジュールに基づくものではありません。アイデアは、クラスを作成する場合、デフォルトで同じソースファイルまたはモジュール内の別のクラスのすべてのメンバーにアクセスする必要があるということです。他の誰かがあなたのクラスを拡張すると、そのコードは別のモジュールとソースファイルに格納されるため、アクセスを許可しない限り、基本クラスのメンバーにアクセスすることはできません。あなたが考えてみれば

、アクセス制御のスウィフトパラダイムは、C++/Javaののそれと同じくらい意味がある、それだけで違います。

これと言語間の他の違いについてhttp://www.swiftprogrammer.info/swift_vs_cpp.htmlを参照してください。

+0

理論的には、あなたのコードが他のXcodeプロジェクトで使用されるのであれば、アクセスコントロールを使うだけでよいということを理解していますか?私は、あなたがすべてのプロパティ値(私が知っているゲッターとセッターはSwiftのコンピュータプロパティに属しています)にアクセスできるようになって以来、多くのセッターとゲッターを持っていると思います。 –

+0

このトピックの詳細については、オリジナルの記事の更新を参照してください。 –

関連する問題