NSInteger vs int vs object

时间:2013-11-07 17:45:27

标签: objective-c nsinteger

我对Objective-C很新,而且我一直在学习,我一直在努力制作自己的程序。 我们的想法是有一个名为totalSave的变量(或对象?),一个带有参数addToTotalSaved的方法saveAmount和多个对象(每个对象都会给出参数saveAmount一个不同的值),当被采取行动时,addToTotalSavedtotalSave'被'发送',或者无论术语是什么,都会totalSave,以便totalSave增加正确的金额。

首先,如果我对代码如何工作的想法是完全错误的,你能提供更好的方法吗? ......我觉得这应该不复杂 - 但我的问题是{{1}}应该是什么?一个int?一个NSInteger?一个东西?

2 个答案:

答案 0 :(得分:1)

听起来好像你让它变得过于复杂。显然,这个想法并不是真的“有一个名为totalSave的变量”,因为用户可能不在乎你存储它的位置,而且从帖子的其余部分开始,你实际上并不关心如何存储它

那就是说,为了使这个更具体一点,让我们考虑一下程序的许多部分可能会增加的“总分”状态。您可以采取几种方法。无论如何,你可能在某个地方有一些跟踪得分的对象。我们将其称为Game对象,但它可以是Level或其他。

因此,有三大思想流派:您可以将此Game对象传递给所有人,您可以拥有Game单身,或者您可以使用通知。这些方法中的每一种都有优势,你选择的任何一种方法对于一个简单的程序来说都可能是好的(就个人而言,对于一个非常简单的程序,我会使用单例)。

在第一个方案中,在程序的某个时刻,您创建了一个Game对象,该对象具有一些addToScore:方法。您将此对象指定为需要更新分数的每个其他对象的属性。每次调用[self.game addToScore:value]。这种方法使单元测试更简单,但实现起来可能有点乏味。

在第二个方案中,您有一些shared singleton +[Game sharedGame]。如果要更新分数,请致电[[Game sharedGame] addToScore:value]。这通常很容易实现。

在第三种方案中,您有一些使用Game来观察某些通知的对象(NSNotificationCenter)。如果要更新分数,只需在其用户词典中发布包含要添加的金额的通知即可。这对于保持极度分离非常有用,但在更常见的情况下再次变得有点乏味。

但正如@Chuck指出的那样,你可能过度思考了这一点,你可能想回过头来学习一些教程,以便更好地了解这些东西通常是如何工作的。你所描述的那种情况并不复杂。

答案 1 :(得分:0)

听起来你想要一个包含整数值的类。然后你想给该类一个函数addToTotal(somenum)。

可以想象你可以在程序上完成所有这些,但是如果你想重新使用这个Total,我建议把它填入课堂。