Это обе конструкции Logos.%new
- для добавления новых методов в класс во время выполнения, и его синтаксис - %new(typeencoding)
;Вы можете получить информацию о кодировках типа Objective-C в документации Apple по Objective-C .Обратите внимание, что первыми двумя аргументами этих методов всегда являются id и SEL, поэтому вторые два символа кодировки вашего типа должны быть "@:
".Первый символ - это тип возвращаемого значения, а все остальное - ваш набор пользовательских аргументов.
В качестве примера приведен довольно бесполезный метод:
%hook NSMutableString
%new(v@:)
- (void)appendAwesomeThings {
[self appendString:@"Awesome."];
}
%end
(это на самом делевероятно, не работает, поскольку NSString является кластером классов, но он служит примером не менее!)
%class
- устаревшая директива для прямого объявления класса, который будет использоваться во время выполнения;Он был заменен на %c(ClassName)
, который должен использоваться в строке.Например,
[[%c(NSString) alloc] initWithString:@"Cool."];