Какова цель% new &% class? - PullRequest
       2

Какова цель% new &% class?

4 голосов
/ 21 июля 2011

Что означают% new и% class с точки зрения настроек MobileSubstrate? Например:

%class TPBottomLockBar;

и

%new(v@:)

Извините за двойной вопрос!

1 Ответ

16 голосов
/ 21 июля 2011

Это обе конструкции 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."];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...