問題タブ [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.
ios - NSProxy の互換性のないポインター型
というNSProxy
サブクラスとEBManagedObject
というNSObject
サブクラスがありEBObject
ます。fromEBManagedObject
を取得するために使用される GUID で初期化されます。は、送信されたすべてのメッセージをその に転送しますが、一部の制限されたメッセージを除き、例外がスローされます。したがって、 を使用できる場所ならどこでも を使用できます。私の問題は、Xcode がこれを理解せず、次のことをしようとすると、互換性のないポインター型の警告が表示されることです。EBObject
EBObjectRepository
EBManagedObject
EBObject
EBObject
EBManagedObject
修正するのは簡単です:
EBObject
しかし、XcodeにEBManagedObject
互換性のあるポインタ型を考慮させる方法があるかどうか疑問に思っていますか?
両方が実装して次のようなことを行うプロトコルを作成できることはわかっています。
しかし、私にはそれをしない十分な理由があります。
ちなみにクラス名は全部でっち上げです。私の実際のシナリオはもっと複雑なので、問題を説明するために簡単な例を作成しました。
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:] が鍵になると思います。