Это прослушивало меня в течение долгого времени, и я пытался много раз искать его.Как я должен использовать переменные класса в Objective-C?
Когда я впервые начал изучать Objective-C, я помню, как я рассматривал переменные класса. Я видел много потоков при переполнении стека и в других местах, которые в основном говорили: «Objective-C не поддерживает переменные класса, такие как C, но есть некоторые обходные пути».
Чтение этого заставило меня уклониться от использования переменных класса, особенно потому, что я читал сотни раз, что глобальные переменные омрачают элегантность ООП.
Так что у меня очень открытый, упрямый и разговорный вопрос: Должен ли я использовать переменные класса в объекте C? Кроме того, я делаю это правильно?
Вот моя ситуация: я создаю приложение, и я создал класс обработки касаний, чтобы иметь дело со всеми входами, полученными от касаний экрана. Данные очень полезны, и я хотел бы, чтобы каждый спрайт имел доступ к нему.
Поскольку каждый объект является подклассом моего класса геймобжектов, я полагаю, что я просто сделать переменный класс, сделать так:
заголовка для класса геймобжекты:
+(SSTouchHandler *)touchHandler;
+(void)setHandler:(SSTouchHandler *)handler;
реализация для класса геймобжекты:
static SSTouchHandler *touchHandler = nil;
+(SSTouchHandler *)touchHandler
{
if (touchHandler)
return touchHandler;
else
return nil;
}
+(void)setHandler:(SSTouchHandler *)handler
{
touchHandler = handler;
}
Теперь это работает. Это прекрасно работает.
Я могу обратиться к моему проводнику с помощью [GameObject touchHandler] из любого места, в котором я нуждаюсь.
Это все, что я мог когда-либо хотеть и многое другое.
Но должен ли я использовать этот метод? Я загрязняю красоту, которая является объектно-ориентированным программированием?
Есть ли способ, которым я должен подправить этот процесс, чтобы он работал оптимально?
Спасибо за вход и вход, я, вероятно, немного побеспокоил, я просто не хочу приступать к неправильной игровой структуре.
Как и в других языках, статические переменные используются в Objective-C. Но их очень легко злоупотреблять, как и на других языках. Как правило, когда вы нажимаете «сладкое пятно» для разработки приложения, потребность в статистике падает до довольно низкого уровня. –
Вот что я понял, имеет смысл. Это мое первое приложение (по крайней мере, первое, что я планирую завершить и выпуская), и я честно вижу только необходимость статической переменной ONE. Думаешь, я могу пойти на это? – IAmTheAg
Блок 'if' в вашем методе' touchHandler' не нужен, просто выполните 'return touchHandler''. Если он равен нулю, он вернет нуль. – dreamlax