在Objective-C中,至少有兩種方法可以獲取(或創建?因此是問題)選擇器:@selector(foo:bar:)
或NSSelectorFromString(@"foo:bar:")
。但是選擇者的壽命是多少?選擇器的壽命是多少?
由於選擇器知道(至少)他們的名字,他們不太可能是一個可複製的固定大小的可複製值,可以在程序周圍混洗。這意味着有人需要分配並可能釋放它們。 Cocoa框架中的大多數對象都具有保留髮布語義,這使得它們的所有權更加明確,並且相對容易跟蹤。但是,我看不出有關選擇器所有權的明確概念。
我期望用第一種語法獲得的選擇器在程序的整個生命週期(比如文字字符串)中都是全局的,但另一個呢?如果我使用NSSelectorFromString(@"foo:bar:")
創建/獲取選擇器,它是否也適用於我的程序的整個生命週期?
不正確。 'NSSelectorFromString'被記錄爲調用'sel_registerName'。 –
如何「缺件」而不是「不正確」? –
你的答案是「這兩個簡單*檢索*選擇器」。這是不正確的。其中之一被記錄爲在必要時創建選擇器。 –