Вызов методов в разных классах - PullRequest
0 голосов
/ 16 января 2011

Этот вопрос наполовину похож на тот, который задан здесь

Но разница в том, что я использую cocos2d. У меня есть метод с именем скриншот в моем AppDelegate. Это, очевидно, используется, чтобы сделать скриншот. Я хочу вызвать этот метод в другом классе, но просто делаю [self screenshot]; не работает, потому что я получаю предупреждение «GameOver», и я не отвечаю на «-screenshot».

Все, что я хочу, это чтобы метод снимка экрана вызывался в GameOver.

Спасибо!

1 Ответ

0 голосов
/ 16 января 2011

Вы не можете вызвать метод, который не существует - он вызовет ошибку времени выполнения.

Если вы хотите вызвать метод AppDelegate из GameOver, у вас должен быть указатель на объект AppDelegate, если методне является статическим:

[appDelegatePointer screenshot];

Если метод является статическим

[AppDelegate screenshot];

Я полагаю, у вас есть только один объект AppDelegate и вы можете создать статический метод

+(AppDelegate) sharedDelegate;

класса AppDelegate, который будет возвращать ваш объект singleton.И поэтому вы сможете вызывать метод screenshot из объекта GameOver или из любого другого места, например:

[[AppDelegate sharedDelegate] screenshot];

Это делается в CCDirector, CCTextureCache, SimpleAudioEngine, ... классах в Cocos2D

...