Есть ли способ сохранить селектор в NSDictionary
, не храня его как NSString
?
SEL
- это просто указатель, который можно сохранить в NSValue
:
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
[NSValue valueWithPointer:@selector(foo)], @"foo",
nil];
Чтобы вернуть селектор , вы можете использовать:
SEL aSel = [[dict objectForKey:@"foo"] pointerValue];
NSDictionary
на самом деле просто CFDictionary
, который сохраняет и освобождает все ключи и значения. Если вы создаете CFDictionary
напрямую, вы можете настроить его так, чтобы значения не сохранялись и не освобождались. Вы можете привести тип CFDictionaryRef
к NSDictionary *
и наоборот.