objective-c - 结构或类

标签 objective-c class iphone-sdk-3.0 struct

我正在开发 iPhone 3.1.3 应用程序。

我有一个名为 Object2D 的类,其中包含字段和方法;代表一个形状。 Object2D 有一个字段代表它的大小,另一个字段代表它的类型。

现在,我需要另一个名为 Pattern 的类,它是一组形状。在 Pattern 中,我将拥有一组形状。从这些形状中,我只需要它们的大小、类型和它们在图案中的位置,我不需要任何方法。

我想知道有一个表示形状的新结构而不是使用 Object2D 类会更好。

我问这个是因为我考虑内存性能。我不确定,但结构比类小,也许使用它们而不是类更好。

你怎么看?

最佳答案

如果您查看内存使用情况,几乎在所有情况下差异都可以忽略不计。对象比等效结构大一个指针。

更大的区别在于如何使用它们。对象可以有方法和层次结构并与 Cocoa 的其余部分交互。使用结构,您需要为每种结构类型创建自定义函数或将伪对象系统组合在一起。最重要的是,任意结构不能与 Cocoa (Touch) 的其余部分很好地交互。例如:

  • 如果你在其中存储对象,你必须非常小心地正确地进行你自己的内存管理
  • 如果不创建对象包装器,就不能将它们存储在 NSArrays 中(因为 NSArray 是一个对象数组)
  • 您不能在 Interface Builder 中连接结构——它对它们一无所知
  • 你不能用结构做 KVO 或 KVC

一般来说,如果您正在使用类似 Cocoa 的框架,对象是一个很好的默认选择。一旦确定确实需要结构,就使用它们。

关于objective-c - 结构或类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6530481/

相关文章:

ios - AVAudioplayer 不播放

ios - 从 AppDelegate 问题访问 Storyboard ViewController

c++ - 如何在 C++ 中处理一副纸牌

java - 为 Android 应用程序创建类图

iphone - 是否可以在 iPhone 应用程序中在启动屏幕中制作小型快速动画?

iphone - 将 PDF 加载到屏幕外的图层中

iphone - iOS - 代码仅在插入断点时才有效

objective-c - 所有测试均未完成 - xcode 4.5

c++ - C++ 中是否有类似于 Java 的 CompareTo 方法,您可以在其中对数据类型使用 > < = 操作

iphone - 将 Apache Portable Runtime 交叉编译到 iPhone