Неясно, что вы спрашиваете, но давайте посмотрим на ваш код и посмотрим, поможет ли это.
Ваш первый метод можно записать более кратко, как:
- (void) compareSize:(Player *)player
{
isBigger = self.fSize > player.pSize;
}
Существуетбессмысленно использовать if
/ else
для присвоения значения true
/ false
(или YES
/ NO
).
Глядя на этот метод, возникает очевидный вопрос:было бы лучше возвращать значение, а не присваивать переменной экземпляра.Это будет выглядеть так:
- (BOOL) compareSize:(Player *)player
{
return self.fSize > player.pSize;
}
, и теперь вы можете использовать вызов compareSize
в if
.
Предполагая, что вторая версия compareSize
, ваш второй метод:
-(void) update
{
//Check to see if bigger than player fish
if ([self compareSize]) // OOPS, no Player
{
//code for if bigger
}
else
{
//etc.
}
}
Но это не работает, так как вам нужен экземпляр Player
для перехода к compareSize:
, например [self compareSize:somePlayerInstance]
.Итак, теперь вы должны спросить себя, где вы ожидаете найти Player
;это может быть аргумент update
(например, - (void) update:(Player *)somePlayerInstance
), или у вас может быть метод для вызова, который возвращает целую коллекцию игроков, и вам нужно проверить каждого из них и т. д. и т. д. Я не могу датьответ, поскольку я понятия не имею о вашей игре и алгоритме!
Следующий комментарий
Вы должны хранить ссылку на ваш объект Player
где-то в вашем приложении.Если есть только один игрок, Player
сконструирован как синглтон с sharedInstance
или с тем же именем, метод класса, который возвращает один экземпляр?Если это так, то ваш update
будет содержать:
if ([self compareSize:[Player sharedInstance]])
и т. Д.
Другой шаблон проектирования - это чтобы ваш делегат приложения сохранял ссылку и предоставлял метод (или свойство) для доступаЭто.Следуя этой схеме (и составляя имена классов MyDelegateApp
и свойства player
), ваш код может выглядеть следующим образом:
if ([self compareSize:((MyAppDelegate *)[NSApp delegate]).player])
Еще одна модель заключается в создании одиночного проигрывателя в основном XIB / NIB приложения.файл - и т. д. и т. д., существует множество моделей приложений!
Вам «просто» (это, конечно, не просто) нужно спроектировать модель приложения так, чтобы ваш одиночный плеер был так или иначе доступен,где вам это нужно ...