self
- это переменная instance , используемая для ссылки на экземпляр текущего объекта.
Вы пытаетесь использовать его на уровне класса метод +(void)...
, где self
не имеет значения. Попробуйте использовать общий экземпляр или передать экземпляр рассматриваемого класса методу.
+ (void) run:(Action)action on:(MyClass*) instance after:(int) seconds
{
[instance run:action after:seconds repeat:NO];
}
EDIT
Мои комментаторы отметили, что self
имеет значение в контексте уровня класса, но относится к самому классу. Это означает, что вы пытаетесь вызвать метод, который выглядит следующим образом:
[MyClass run:action after:seconds repeat:NO];
Куда вы должны стремиться:
[myClassInstance run:action after:seconds repeat:NO];