問題タブ [nsproxy]
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.
objective-c - NSProxyのインスタンスを自動解放できますか?
NSProxy
本当に実装-autorelease
し-release
ますか?そうでない場合は、手動でdealloc
NSProxy
インスタンス化する必要がありますか?(私はGCを使用していないと仮定してください)。
私のためにこれを片付けてくれてありがとう。
cocoa - Mac OS X (Cocoa) 上の CORBA
私は現在、最初は Mac OS X (Cocoa を使用) に焦点を当てたプロジェクトで、分散モデル オブジェクト (つまり、複数の異なるコンピューターで実行される計算モデル) をサポートするさまざまな方法を検討しています。私の知る限り、クラス クラスターを使用する可能性がありますNSProxy
。しかし、Objective-C をサポートする CORBA の実装もあるようです。
後で、Windows マシンもサポート/含める必要があるかもしれません。その場合、Windows 側で Gnustep のようなものを使用する必要があります (うまく機能する場合はオプションになる可能性があります)。または、両方のテクノロジの組み合わせを考え出す必要があります。または、何かを手動で記述します (もちろん、これは最も望ましくないオプションです)。
私の質問は次のとおりです。
両方のテクノロジー (Cocoa ネイティブ インフラストラクチャと CORBA) の経験がある場合は、どちらのアプローチの重要な機能や問題点を指摘できますか? (編集:このスレッドで既に指摘したように、リモート メソッドは今のところ iPhone と iPad では使用できません。一方、どちらのプラットフォームでも動作する CORBA 実装があります。たとえば、「AdORB - Mac OS X 用の CORBA ORBおよび iPhone OS ".)
上記の方法で Cocoa で Gnustep を使用することは可能ですか? [編集: Gnustep FAQ エントリ 1.1.5によると、これは不可能であるため、Cocoa のネイティブ インフラストラクチャを使用すると、このテクノロジに縛られてしまいます。]
Cocoa のテクノロジを使用してすべての Mac OS クライアント間で通信し、CORBA を介して Windows クライアントと通信することは可能ですか? [編集:私が今学んだことから、これは可能ですが、確かに実現可能ではありません。メッセージは双方向に転送される必要があります。つまり、あるシステムから別のシステムに、またはその逆にメッセージを転送するための「プロキシ」が必要です。これは、ネットワーク層を手動で作成するのと本質的に同等であり、
NSProxy
クラス クラスタまたは CORBA のいずれからも実際的な利点はありません。]
更新:柔軟性と拡張性が懸念される場合は、CORBA の方が適しているようです。欠点は、学習と最初の使用がより複雑に見えることです。実用的な側面に関するさまざまな視点については、このスレッド(Kristopher Johnson によって提供されたリンク – ありがとう!) を参照してください。Web サービスは、通信パターンが十分に単純である限り実行可能なオプションです。iOS で適切に機能するオプションについては、このスレッドを参照してください。調査結果をこの記事にまとめました。
objective-c - Cocoa、NSProxy、オブジェクトのメソッドを引き継ぐ方法は?
オブジェクト内のメソッドを独自の実装に置き換える必要があります。例えば、
addObject を独自のメソッドに置き換えるにはどうすればよいですか?
addObject:
つまり、 SPECIFIC オブジェクトの実装を別の実装に置き換える方法はありますか?
私はいじっていましNSProxy
たが、何をすべきかわかりませんでした。
どんな助けでも大歓迎です。
ありがとう
iphone - UIView の NSProxy で成功した人 (たとえば、UILabel?)
NSProxy サブクラスをセットアップして、選択した UIView の代わりになるように設定することで、UIViews に機能を追加する (状態に応じて CALayers を構成する) ことを実験しています。これが私が試したことです:
私の NSProxy サブクラスには、次のコードがあります。
そして、私の NSProxy サブクラスを次のように使用します。
addSubview: 行に到達するまで動作するようです。
メッセージ トレースをオンにすると ( instrumentObjcMessageSends(YES); )、addSubview: の奥深くまで機能する前の各メッセージの転送が表示されます。この一連のメソッド呼び出しがログに表示されます (ここに表示されている最初のメッセージは、プロキシー):
そして、次のエラーが表示されます。
NSProxy サブクラスを使用せず、代わりに UILabel サブクラス (HFMultiStateLabel) を使用すると、問題なく動作します。addSubview: が呼び出されると発生するメッセージ トレースを次に示します (HFNoteNameControl はラベルのスーパービューです)。
NSProxy を使用すると、-superlayer までの各メソッドが正常に呼び出されることを確認できます。何らかの理由で、NSProxy では、CALayer の代わりに UILabel 上のスーパーレイヤーが呼び出されています。おそらくどこかで混乱し、UILabel がその CALayer の代わりにサブレイヤーに挿入されるのでしょうか?
何か不足していますか?
UIKit は、NSProxy がフックする通常のメカニズムをバイパスする何らかの最適化を行いますか?
他の考え?
ありがとう!
ヘンリー
PS私はこれをデバイスではなくシミュレータでのみ試しました。その行動は何か違うでしょうか?
objective-c - 私が持っているオブジェクトが本当に NSProxy であるかどうかをどのように検出できますか?
Apple API から渡された、より疑わしいオブジェクト (mutableArrayValueForKeyPath など) を少し調べてみたところ、特定のオブジェクトであると思われるものを Apple がどのくらいの頻度で提供してくれるのか疑問に思いましたが、実際には単なる NSProxy です、密かに他のオブジェクトにも通知したり、メッセージをフィルタリングしたりしています。
オブジェクトが NSProxy のサブクラスであるかどうかを確認する方法はありますか? 彼らは、彼らが表すものを正確に模倣するのが得意なようです.
objective-c - NSProxy はどのように「自分自身を別のオブジェクトに変換する」のですか?
NSProxy クラス リファレンスには次のように書かれています。
通常、プロキシへのメッセージは実際のオブジェクトに転送されるか、プロキシに実際のオブジェクトをロード (またはプロキシ自体を変換) させます。
「自分自身を現実の物体に変換する」とは具体的にどのように機能するのでしょうか?
もう少し具体的に説明すると、文字列を受け取って の新しいインスタンスを返すFoo
メソッドが class にあるとします。存在する可能性のあるそれ自体への他の参照をいじることなく、同じメモリを占有し、メッセージが受信された場合に自身を に変換する をセットアップすることは可能でしょうか?newFooWithString:
Foo
NSProxy
pleaseBecomeAFooUsingString: @"bar"
[Foo newFooWithString: @"bar"]
iphone - NSObjectは、NSObjectとNSProxyの両方でallocが宣言されているのに、NSObjectプロトコルに保持されている理由
保持はNSObjectプロトコルで宣言されています。
したがって、NSObjectクラスとNSProxyクラスがそれを実装します。
ただし、NSProxyクラスとNSObjectクラスの両方に割り当てがあります。
NSObjectプロトコルでallocが宣言されていないのはなぜですか?
副次的な質問:NSObjectプロトコルは、メソッドのクラスバージョンを格納するためにも使用されますが、インスタンスメソッドはNSObjectクラスにあります。NSObjectプロトコルで宣言されているクラスとインスタンスの両方を停止するものはありますか。なぜそれらを分割するのですか?
乾杯
objective-c - Objective-C - NSProxy クラスの用途は何ですか?
NSProxy クラスの用途は何ですか。存在しないオブジェクトの説明を取得できるようにしたいのはなぜですか?
objective-c - NSProxyとキー値の監視
NSProxy
まだ存在していないものの代用オブジェクトとして非常にうまく機能するようです。例えば。
上記のコードは、プロキシが表すターゲットにメソッド呼び出しを透過的に渡します。ただし、ターゲットでのKVOの監視と通知を処理していないようです。NSProxy
渡されるオブジェクトの略としてサブクラスを使用しようとしましたNSTableView
が、次のエラーが発生します。
NSProxy
KVOに準拠した透明にする方法はありますか?
objective-c - ARC の下で OCMock を取得して、弱いプロパティを使用して NSProxy サブクラス セットを nilling しないようにするにはどうすればよいですか?
の下に、プロパティを持つARC
オブジェクトがあります。のいくつかのテストを作成しようとしており、 を使用してそのプロパティをモックしています。Child
weak
parent
Child
parent
OCMock
ARCではNSProxy
、合成された弱いプロパティセッターを使用してサブクラスを設定してもプロパティは設定されません...弱いプロパティが設定された後の行で、それをチェックすると、それがすでにnil
. 具体例は次のとおりです。
がを参照するためにassign
プロパティの代わりにプロパティを使用してこれを回避できることはわかっていますが、それを使い終わったら (ある種の穴居人のように)をアウトする必要があります。 ARCが回避するはずだったもの。weak
Child
Parent
nil
parent
アプリのコードを変更せずにこのテストに合格する方法について何か提案はありますか?
編集: であることと関係OCMockObject
があるようです。 のインスタンスにNSProxy
すると、弱参照は nil 以外の値を「保持」します。アプリのコードを変更せずにこのテストに合格する方法をまだ探しています。aParent
NSObject
child.parent
編集 2 :ブレイクの答えを受け入れた後、条件付きでプロパティを弱いから変更するプリプロセッサ マクロのプロジェクトで実装を行いました -> 割り当て。あなたのマイレージは異なる場合があります: