「(NSInteger)self」をキャストするのは危険ですか?
タグ値を使用せずに、2 つのビューを区別する必要があります。
危険な場合、何かアイデアはありますか?
You mean you have two UIView
pointers and you want to know if they are pointing to the same object? Just use ==
. No need to cast them. If you mean something else, you'll need to provide more details on what you mean by "distinguishing two views".
ARC が経験する可能性のある痙攣を無視して、 にキャストself
(またはその他のポインター) することは危険ではありませんinteger
。ただし、逆方向にキャストするのは非常に危険です。
self
また、Objective-C には、整数へのキャストが有用な方法で再現可能であると自信を持って言うのが難しい、奇妙なコーナーと暗い通路が十分にあります。
プロトコルは、オブジェクトを比較するためNSObject
のメソッドを宣言します。isEqual:
クラスはこれをオーバーライドして、内容が等しい場合にそのインスタンスを等しいと定義できます。そうしないと、2 つのインスタンスが等しくないと比較されます。
これは、ポインター値を直接比較するのではなく、オブジェクトを互いに区別するために実際に使用する必要があるものです。ただし、これは安全に行うことができます。