相求一个资料:IOS中各种传值方法的优缺点:我特别想知道属性传值与代理传值、通知、块传值的优缺点?
目前小弟只会代理和属性,但是就这两种也不知道有啥不同,小弟为小白求赐教~~搜索了很多也没有没有详尽的资料如果您有麻烦指导下。
业精于勤,荒于嬉;行成于思,毁于随。
1. 属性が最も直接的です。たとえば、UIImageView は UIViewControllerA に組み込まれ、UIImageView に画像を提供します。 2. プロキシの環境は通常、A が B を操作し、その後 B がすぐに結果を返さず、条件が満たされるのを待って、B が戻ってきて A に通知します。一般的なネットワーク リクエストは次のような特徴があります。リターンアクション。 3. ブロックは動作においてデリゲートに似ており、コールバックにも使用されます。ただし、(1) ブロックはポップアップ ボックスなどの方が簡単に記述でき、ポップアップ ボックスの後にクリック イベント コールバックを作成し、そのコールバックをalertView.clickBlock = xxx と記述する必要があります。 build another method for delegate (2) ブロックはその内部オブジェクトをコピーします。これにより、優れた分離効果が得られます。たとえば、A は一般的なシングルトン、B->A->C であり、C はコールバック B を処理します。 E->A->F の場合、F は E へのコールバックを処理します。デリゲートの場合、C が A にコールバックした後、A は B または E にコールバックしますか? Aさんは知りません。ただし、ブロックはオブジェクトをコピーします。B がブロックを作成すると、C が取得するコールバック オブジェクトは B になります。これは少し理解するのが難しいです。 4. 最初の 2 つと比較すると、通知は次のとおりです: (1) 1 対多、1 つの通知が送信され、すべての受信者が応答し、同期的です。 (2) 送信者と受信者の間には直接の関係がありません。特に複雑なプロジェクトでは、2 つのオブジェクトが相互に連絡できない場合、通知を使用してメッセージを送信できますが、混乱が生じやすくなります。たとえば、ログインに成功した場合、さまざまな場所でデータを更新する必要がありますが、ログインモジュールはログインに成功した後に何をすべきかに焦点を当てているため、ログインモジュールで管理する必要はありません。通知。もちろん、プロジェクトでは相互作用を可能な限り少なくする必要があります。
1. 属性が最も直接的です。たとえば、UIImageView は UIViewControllerA に組み込まれ、UIImageView に画像を提供します。
2. プロキシの環境は通常、A が B を操作し、その後 B がすぐに結果を返さず、条件が満たされるのを待って、B が戻ってきて A に通知します。一般的なネットワーク リクエストは次のような特徴があります。リターンアクション。
3. ブロックは動作においてデリゲートに似ており、コールバックにも使用されます。ただし、(1) ブロックはポップアップ ボックスなどの方が簡単に記述でき、ポップアップ ボックスの後にクリック イベント コールバックを作成し、そのコールバックをalertView.clickBlock = xxx と記述する必要があります。 build another method for delegate (2) ブロックはその内部オブジェクトをコピーします。これにより、優れた分離効果が得られます。たとえば、A は一般的なシングルトン、B->A->C であり、C はコールバック B を処理します。 E->A->F の場合、F は E へのコールバックを処理します。デリゲートの場合、C が A にコールバックした後、A は B または E にコールバックしますか? Aさんは知りません。ただし、ブロックはオブジェクトをコピーします。B がブロックを作成すると、C が取得するコールバック オブジェクトは B になります。これは少し理解するのが難しいです。
4. 最初の 2 つと比較すると、通知は次のとおりです: (1) 1 対多、1 つの通知が送信され、すべての受信者が応答し、同期的です。 (2) 送信者と受信者の間には直接の関係がありません。特に複雑なプロジェクトでは、2 つのオブジェクトが相互に連絡できない場合、通知を使用してメッセージを送信できますが、混乱が生じやすくなります。たとえば、ログインに成功した場合、さまざまな場所でデータを更新する必要がありますが、ログインモジュールはログインに成功した後に何をすべきかに焦点を当てているため、ログインモジュールで管理する必要はありません。通知。もちろん、プロジェクトでは相互作用を可能な限り少なくする必要があります。