@selector(foo:bar:)
Objective-C では、セレクターを取得 (または作成? したがって質問) する方法が少なくとも 2 つありますNSSelectorFromString(@"foo:bar:")
。しかし、セレクターの寿命は?
セレクターは (少なくとも) 自分の名前を知っているので、プログラム内でシャッフルできる固定サイズのコピー可能な値である可能性は低いです。これは、誰かがそれらを割り当てたり、場合によっては割り当てを解除したりする必要があることを意味します。Cocoa フレームワークのほとんどのオブジェクトには保持解放セマンティクスがあり、これにより所有権が明示的になり、追跡が比較的容易になります。ただし、セレクターの所有権の明確な概念はわかりません。
最初の構文で取得されたセレクターは、プログラムの存続期間中 (リテラル文字列のように) グローバルとして存続することを期待していますが、もう一方はどうでしょうか? でセレクターを作成/取得するとNSSelectorFromString(@"foo:bar:")
、プログラムの全期間にわたって有効になりますか?