問題タブ [unsafe-unretained]

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 に答える
2209 参照

swift - takeUnretainedValue と takeRetainedValue の違いは何ですか?

takeUnretainedValueとはどう違いtakeRetainedValueますか?Appleのドキュメントに基づく:

これらのメソッドはどちらも、オブジェクトのラップされていない元の型を返します。呼び出している API が保持されていないオブジェクトまたは保持されたオブジェクトを返すかどうかに基づいて、使用するメソッドを選択します。

しかし、管理されていないオブジェクトが保持されていないオブジェクトなのか保持されていないオブジェクトなのかは、どうすればわかりますか? たとえば、フレームワークのメソッドABAddressBookCreateWithOptions:AddressBook管理されていないオブジェクトを返しますが、ABAddressBook一部のチュートリアルではこれを保持オブジェクトと見なしています。を使用するALAssetと、メソッドthumbnailは管理されていないオブジェクトCGImageを返します。一部のチュートリアルでは、これを保持されていないオブジェクトと見なします。

よろしくお願いします。

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

swift - `unowned` (実際には `unowned(safe)`) 参照が deinit されていることを確認する方法はありますか?

unowned(safe)「可用性」についてSwiftリファレンスを確認する方法はありますか? isReferenceAccessibleしたがって、次の例のような仮想関数を探しています。

免責事項:この質問はweak参照についてではありません!strongunownedおよびweak参照がどのように機能するかを認識しています。そして、私は参照を使いたくありませんweak(遅くて変更可能であるため)。アクセスしようとしているときにunowned(safe)既に参照が割り当てられている場合でも、参照が割り当てられることはわかっています。deinitedそして、コンパイラがこのチェックを行うことができ、アプリケーションがクラッシュする前に実際にチェックすることを知っています。

したがって、最新の Swift で参照サイクルを破るための非常に強力でパフォーマンスの高いテクニック/パラダイムになると私は信じています。

さらに、私はそれが素晴らしい言語機能になると信じています! たとえば、モディファイヤが呼び出されshared_ownership、上記の動作で次のように動作するとします。

...次のような実装で:

weak...次と同等の副作用があります(関連する複雑さとパフォーマンスのペナルティなし):

ああ、それは素晴らしいでしょう!

、およびの違いweakunowned(safe)unowned(unsafe)に関する詳細情報。

アップデート

上記の機能に関連する素晴らしい Swift の提案を見つけました: Allow using optional binding to upgrade self from a weak to strong reference