«Неправильное использование« this »в функции, не являющейся членом» в контексте target-c? - PullRequest
2 голосов
/ 26 сентября 2011

Использование Xcode.

В этом коде (функция func объявлена ​​в интерфейсе) сообщается ошибка subj, стоящая на строке с «self».

+ (void) run: (Action) action after: (int) seconds 
{
    [self run:action after:seconds repeat:NO];
}

Что за ...?

1 Ответ

7 голосов
/ 26 сентября 2011

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];
...