Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 对象分配与对象创建_Oop_Object_Pointers - Fatal编程技术网

Oop 对象分配与对象创建

Oop 对象分配与对象创建,oop,object,pointers,Oop,Object,Pointers,我总是觉得很难决定何时创建一个对象并将其传递给每个需要它的对象,或者为每个需要该项的对象创建一个新对象 有些情况非常明显,例如实体对象在分配和实例化后为只读。您可以将同一对象传递到任何位置,而不必担心另一个对象会修改它,这会破坏包含对它的引用的其他对象 我的问题主要在于向用户表示自己的对象。cocos2d中的CCSprite、Cocoa(AppKit)中的NSMenuItem等对象以及其他具有视觉表示的对象 示例: 在cocoa中,我知道我必须为每个nspoupButton创建一个NSMen

我总是觉得很难决定何时创建一个对象并将其传递给每个需要它的对象,或者为每个需要该项的对象创建一个新对象

有些情况非常明显,例如实体对象在分配和实例化后为只读。您可以将同一对象传递到任何位置,而不必担心另一个对象会修改它,这会破坏包含对它的引用的其他对象

我的问题主要在于向用户表示自己的对象。cocos2d中的
CCSprite
、Cocoa(AppKit)中的
NSMenuItem
等对象以及其他具有视觉表示的对象



示例: 在cocoa中,我知道我必须为每个
nspoupButton
创建一个
NSMenu
,以便对特定按钮的选择不会影响其余按钮。但是,其中包含的
NSMenuItems
呢?我可以创建一个集合并将它们传递到所有菜单吗?你的理由是什么,或者你是如何得出这样的结论的

其他例子: 在cocos2d和几乎所有基于GUI的应用程序中,您可以将两个图像/sprites/…等传递给按钮。一个用于正常状态,另一个用于选定(高亮显示、按下、单击)状态。我可以传递相同的图像/精灵/…等吗。让他们指向同一个物体

我希望这不是一个与实现相关的问题(它最终取决于实现),因为我在cocoa、cocos2d、Java等许多编程项目中都会遇到这个问题。。。等等


PS:我需要帮助选择正确的标记

我建议创建新实例,除非这样做会导致性能问题。在多个
NSMenuItem
实例之间共享一个
NSMenuItem
实例会使维护对该实例的控制更加困难,这会增加出错的风险。

我建议创建新实例,除非这样做会导致性能问题。在许多
NSMenuItem
实例中共享一个
NSMenuItem
实例会使维护对该实例的控制更加困难,这会增加出错的风险。

\u\u<必须创建新的。因为,大多数示例(NSMenuItem、CCSprite)都有指向其父级的指针。这意味着,它们必须属于一个父级:'(我想这有点取决于。正如您所指出的,如果它是不可变的,您只需要一个。如果它需要知道它的父级,那么每次使用都必须有一个指针(假设用户是父级)。如果你想让所有使用它的东西都立即改变,我认为图像会属于这一类,那么你只需要一个。如果图像移动,这是一个难题——如果没有人注意到同步,你可以使用一个来节省内存和CPU,但是如果可以的话,你可能想使用单独的实例。谢谢,但是你的答案有点不正确吗o general?它并没有真正回答问题。我从不担心性能,我担心编写和管理太多对象。而且,我也不担心风险,问题是,它是否正常工作?您的问题非常模糊,因此我只能给出一个一般性的答案。经验法则是创建尽可能多的实例你需要并保持它们的有限范围。此外,你需要这些对象才能让你的应用程序正常工作,那么为什么不继续创建它们呢?可维护性。就是这样。通过创建一个对象,我可以改变它的外观,它会到处更新。这大大提高了可维护性,减少了代码混乱。但是,有些对象是c由视觉代表组成的组合往往需要视觉对象本身。您似乎已经决定了如何继续。我不同意这种方法,但这是您的设计:)谢谢,但是你的回答不是有点太笼统了吗?它并没有真正回答问题。我从不担心性能,我担心写和管理太多的对象。而且,我并不真正担心风险,问题是,它甚至可以正常工作吗?你的问题很模糊,所以我只能给出一个笼统的答案。图姆法则b是根据需要创建尽可能多的实例,并将其限制在有限的范围内。此外,应用程序需要这些对象才能正常工作,那么为什么不继续创建它们呢?可维护性。就是这样。通过创建单个对象,我可以改变它的外观,并且它将在任何地方更新。这大大提高了可维护性,减少了代码开销说话。但是,一些由视觉代表组成的对象往往需要视觉对象本身。你似乎已经决定了如何继续。我不同意这种方法,但这是你的设计:)