問題タブ [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.

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

ios - NSProxy の互換性のないポインター型

というNSProxyサブクラスとEBManagedObjectというNSObjectサブクラスがありEBObjectます。fromEBManagedObjectを取得するために使用される GUID で初期化されます。は、送信されたすべてのメッセージをその に転送しますが、一部の制限されたメッセージを除き、例外がスローされます。したがって、 を使用できる場所ならどこでも を使用できます。私の問題は、Xcode がこれを理解せず、次のことをしようとすると、互換性のないポインター型の警告が表示されることです。EBObjectEBObjectRepositoryEBManagedObjectEBObjectEBObjectEBManagedObject

修正するのは簡単です:

EBObjectしかし、XcodeにEBManagedObject互換性のあるポインタ型を考慮させる方法があるかどうか疑問に思っていますか?

両方が実装して次のようなことを行うプロトコルを作成できることはわかっています。

しかし、私にはそれをしない十分な理由があります。

ちなみにクラス名は全部でっち上げです。私の実際のシナリオはもっと複雑なので、問題を説明するために簡単な例を作成しました。

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

ios - NSProxy forwardInvocation: 新しい NSProxy インスタンスを返すとメモリ リークが発生する

NSProxy を使用してオブジェクトをラップし、(forwardInvocation:) で呼び出しの retValue としてプロキシ インスタンスを作成しようとしましたが、すべてのプロキシ インスタンスを ARC で解放することはできません。ずっと悩んでいました。

github でのデモ: https://github.com/JorrisRaghan/proxyon

コンソール ログを表示できます。

DEALLOC PPObject:...

DEALLOC Proxyon:Class< PPObject >

ただし、DEALLOC Proxyon:id< PPObject >" はありません。

また、Instruments を使用してメモリ リークをチェックすることもできます。

だから私はそれを解決するためにあなたの助けが必要です、ありがとう!

更新: このリークは forwardInvocation によるものであることがわかりました:

Proxyon インスタンスの代わりに retVal として PPObject を設定したところ、PPObject でリークが発生したため、-[NSInvocation setReturnValue:] が鍵になると思います。