Для таких операций Cocoa действительно нужен класс Objective-C, производный от NSObject. Для передачи простых типов, таких как целочисленное значение, значение типа bool или значение с плавающей точкой, класс NSNumber может использоваться для инкапсуляции значения через вызов селектора. Это довольно легко с помощью служебных методов, которые класс предоставляет как для создания объекта NSNumber из примитивного типа, так и для извлечения этого примитивного типа обратно из объекта:
- (void)action:(id)sender
{
enum EnumType eVal = /* ... */;
[self performSelectorOnMainThread:@selector(aMethod:) withObject:[NSNumber numberWithInt:(int)eVal] waitUntilDone:YES];
}
- (void)aMethod:(NSNumber)enumValue
{
enum EnumType eVal = (EnumType)[enumValue intValue];
}
Существует также класс NSValue, который может делать то же самое для типов более низкого уровня, таких как указатели или байтовые строки.