2013-11-07 2 views
0

Я довольно новичок в объективе-C, и, поскольку я учился, я пытался создать свою собственную программу. Идея в том, что существует переменная (или объект?) С именем totalSave, метод addToTotalSaved с параметром saveAmount и несколько объектов (каждый объект даст параметр saveAmount другое значение), что при действии на него будет отправлено сообщение addToTotalSaved ', или какова бы ни была терминология, до totalSave, так что totalSave увеличивается на правильную сумму.NSInteger vs int vs object

Прежде всего, если моя идея о том, как работает код, является совершенно неправильной, вы могли бы предложить лучший способ? ... Я чувствую, что это не должно быть сложным, но в остальном мой вопрос заключается в том, что должно быть totalSave? Int? NSInteger? Объект?

+4

Вам необходимо сообщить начало кода, или люди не будут отвечать –

+1

Я думаю, что вы делаете это сложнее в своей голове, чем должно быть.Разве вы просто не пытаетесь создать программу, которая добавляет значение через пользовательское вмененное суммирование? Просто создайте приватный int, называемый totalSave, в своем классе и добавьте к нему свой метод. – zgc7009

+1

Я пропустил после прочтения этого сообщения, но все же хочу сообщить вам, что вы обычно хотите использовать NSInteger, когда не знаете, на какой процессорной архитектуре может работать ваш код, поэтому вы можете по какой-либо причине захотеть максимально возможного int, который на 32-битных системах - это просто int, а в 64-битной системе - длинный. –

ответ

1

Звучит так, будто вы сделали это слишком сложным. Очевидно, что идея на самом деле не «есть переменная с именем totalSave», так как пользователь может заботиться о том, где вы ее храните, и от остальной части вашего сообщения, вам на самом деле все равно, как вы его храните.

При этом, чтобы сделать это более конкретным, давайте подумаем о состоянии «общей оценки», которое могут добавить многочисленные части программы. Есть несколько подходов, которые вы можете предпринять. В любом случае у вас, вероятно, есть какой-то объект, который отслеживает счет. Мы назовем его объектом Game, но это может быть Level или что-то еще.

Итак, есть три большие школы мысли: вы можете передать этот объект Game всем, у вас может быть синглтон Game, или вы можете использовать оповещения. Каждый из этих подходов имеет свои преимущества, и любой, кого вы выбираете, вероятно, подходит для простой программы (лично, для очень простой программы, я бы использовал синглтон).

В первой схеме, в какой-то момент в программе вы создаете объект Game, который имеет некоторый метод addToScore:. Вы назначаете этот объект как свойство для каждого другого объекта, который должен обновить счет. Каждый из этих звонков [self.game addToScore:value]. Этот подход упрощает модульное тестирование, но может быть немного утомительным для реализации.

Во второй схеме у вас есть shared singleton+[Game sharedGame]. Когда вы хотите обновить счет, звоните [[Game sharedGame] addToScore:value]. Это, как правило, easiet для реализации.

В третьей схеме у вас есть объект (Game), который использует NSNotificationCenter для получения уведомления. Когда вы хотите обновить счет, вы просто публикуете уведомление, которое включает сумму, которую нужно добавить в свой пользовательский словарь. Это отлично подходит для того, чтобы держать вещи в высшей степени разобщенными, но снова может быть немного утомительным в более обычном случае.

Но, как отмечает @Chuck, вы, вероятно, слишком задумываетесь об этом, и вам, возможно, захочется вернуться и поработать над некоторыми учебниками, чтобы лучше понять, как эти вещи обычно работают. Типичная ситуация, которую вы описываете, не очень сложна.

0

Похоже, вы хотите, чтобы класс, содержащий целочисленное значение с общим. Затем вы хотите дать этому классу функцию addToTotal (somenum).

Возможно, вы могли бы сделать это все процедурно, но если вы хотите повторно использовать этот Total, я бы рекомендовал набивать его в классе.