問題タブ [objective-c-protocol]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
167 参照

objective-c - 別のメソッドが実装されている場合にのみ1つのメソッドを必要とするプロトコルを定義する

メソッドを追加しているかなり複雑なプロトコルがあります。新しいメソッドのほとんどはですが@optional、ペアになっています。

たとえば、次の2つの方法は連携して機能します。

この例では、最初のメソッドが実装されている場合、2番目のメソッドをとして宣言し@requiredます。それ以外の場合は両方ともオプションです。私が欲しいのは、すべてが必要であるか、コンテキストに基づいていないかのいずれかとして、プロトコルメソッドをネストまたはグループ化する方法です。

理想的には次のようなものです。

0 投票する
3 に答える
257 参照

objective-c - Objective Cで@protocolsを使用する主な理由は何ですか?

サブクラスを作成してメソッドを継承するのではなく、プロトコルを使用したいのはなぜですか。

私にそれを説明してください、私はこのトピックについて混乱しています、私は読んでいる本の説明にあまり満足していません。

メソッドを取得するために、他の方法の代わりにプロトコルをどこで使用しますか?クラスをサブクラス化してメソッドを取得できる場合、メソッドを定義する必要があるプロトコルを使用するのはなぜですか?

0 投票する
0 に答える
460 参照

objective-c - 非推奨のデリゲートメソッドの代替は古いバージョンにフォールスルーする必要がありますか?

私はObjective-Cで作成された適切なデリゲートプロトコルを持っており、それを更新しています。更新の1つでは、メソッドを非推奨にする必要がありますが、技術的には当面は有効です。

これが元のデリゲートメソッドです。これはオプションであるため、必須の方法ではないことに注意してください。これは、機能を維持する必要があるかどうかについての私の判断を曇らせます。

それはクラスで明白にそして単純に2つの場所で使われました。そのようです:

今、私は更新しました。アップデートでは、エラーが発生した時期に基づいて関数を一意のエラーリターンに分割する方が適切なオプションのように見えました。これは、このメソッドの使用が2か所以上に増え、応答が大きく異なる可能性があるためです。これにより、コンシューマーは特定のタイプのエラーを無視するか、少なくとも巨大なifステートメントなしで各エラーを異なる方法で処理できます。これらは新しいデリゲートメソッドです。

クラスでは期待どおりに呼び出していますが、クラスが新しいメソッドを実装していない場合は、非推奨のメソッドにフェイルオーバーしています。もちろん、どちらの方法もない場合は何もしません。

当時は良い考えのように思えましたが、非推奨になっている間も機能を維持することで、メソッドを必要以上に長くひもでつなぐだけですか?非推奨のメソッドは機能するはずですが、お勧めできません。次に、時が来たら、メソッド全体をヤンクします。

これは一般的な慣習、良い考えなどのように見えますか?すべてのコメントを歓迎します。このタイプのAPIの変更に対処するときは、最適なパターンを探すだけです。

0 投票する
1 に答える
24 参照

objective-c-protocol - クラスがUINavigationControllerを継承し、目的cの他のすべてのクラスに表示される1つのクラスで定義されたボタンを使用する方法は?

UINavigationController を継承するクラスを定義し、このクラスにボタンを追加することは可能ですか?このクラスを別のクラスで使用するたびに、各クラスのナビゲーションバーにボタンが表示されます..明確であることを願っています.事前に感謝します

0 投票する
1 に答える
206 参照

objective-c - 別のプロトコルのパラメーターとしての Objective-C プロトコル

Web API にアクセスする汎用リポジトリ (パターン) を作成しようとしています。Objective-C でプロトコルがどのように機能するかを理解するのに苦労しています (インターフェイスが少し異なる c# から来ました)。

私がやろうとしているのは、ProtocolB に渡されたオブジェクトが ProtocolA 自体を実装する必要があるため、ProtocolA を別の ProtocolB のパラメーターにしてから、ProtocolA の ProtocolB アクセス メソッドの実装にすることです。私はそれについて正しく考えていますか?

これは私がこれまでに持っているものですが、動作させることができないようです - 私の論理が間違っているかもしれません:



0 投票する
1 に答える
1118 参照

objective-c - プロトコルに準拠するクラスのカテゴリ

UIViewController のカテゴリを実装しようとしていますが、オブジェクトが特定のプロトコルに準拠していることを確認したいと考えています。このようなもの:

これは可能ですか?

0 投票する
4 に答える
428 参照

objective-c - パラメータなしでプロトコルを定義する

パラメータを追加せずにプロトコル メソッドを定義しようとしていますが、正しい構文が見つかりませんでした。

定義は次のとおりです (構文エラーがあります)。

2 番目のパラメーターで値を渡したくありません。私の目的は、デリゲート インスタンスに何かが起こったことを知らせることだけです。

定義はどう書けばいいですか?

0 投票する
1 に答える
109 参照

ios - デリゲート メソッドがプロトコル準拠を宣言せずに機能するのはなぜですか?

がありUITextField、そこから所有者にドラッグしてdelegateストーリーボードに設定します。

UITextFieldDelegateまた、controller.h ファイルでは、クラスがプロトコルに準拠していると宣言していませんでした。

しかし、- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string作品!それはうまくいきます!

なぜだろう?

UITableView を持たないコントローラーに設定したときに、これに一度会ったことがUITableViewDelegateありUITableViewDataSourceます。