gpt4 book ai didi

iphone - 在 Objective-C 中使用结构(适用于 iOS): Premature Optimization?

转载 作者:太空狗 更新时间:2023-10-30 03:22:36 25 4
gpt4 key购买 nike

我意识到什么算作过早优化具有主观成分,但这是一个经验性或最佳实践问题。

当为 iOS 编程时,我是否应该更喜欢使用 struct 和对象没有“行为”(基本上是方法)的类型定义?我的感觉是 struct 语法对于非 C 语言的人来说有点奇怪,但它应该低调得多。话又说回来,用 50K NSObject 实例测试一些情况,它看起来还不错(我知道是相对的)。我应该“习惯它”(尽可能使用结构)还是 NSObject 实例可以,除非我有性能问题?

典型情况是一个具有两个 int 成员变量的类。我读到过使用结构来保存两个 NSString 实例(或任何 NSObject 子类)是个坏主意。

最佳答案

Struct 中包含 NSObject 实例绝对不是一个好主意。您需要 -init-dealloc 来正确处理保留计数。从调用方编写 retainreleases 简直是疯了。它永远不会得到返回。

具有两个 int 或四个 double

Struct 是边界情况。 Cocoa 框架本身将NSRectNSPoint 等实现为一个结构体。但这个事实让很多新人感到困惑。老实说,甚至原始类型和对象类型之间的区别也让他们感到困惑。当您将 struct 作为对象的属性时,它甚至让我感到困惑:您不能这样做

object.frame.origin.x=10;

如果您开始制作自己的struct,您需要记住哪个是哪个。又是一件麻烦事。我认为它们(NSRect 等)是 struct 的原因基本上是历史原因。

我宁愿把一切都变成对象。并在可用时使用垃圾回收。

并且,不要问人们是否值得优化某些东西。通过仪器或其他方式自己测量。取决于环境(ppc vs intel,OS X vs iOS,iPad vs iPhone),在以前的系统中更快的一种方式在新系统中可能会更慢。

关于iphone - 在 Objective-C 中使用结构(适用于 iOS): Premature Optimization?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3710379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com