objective-c - cocoa /ObjC : Are there any performance drawbacks to my style of allocing objects for property iVars?

标签 objective-c cocoa memory-management properties

每当我的类需要 iVar 时,我都会使用属性。对于保留的属性,我已经习惯了使用访问器方法来分配/初始化实际 iVar 的特定方式:

- (void)anInitOrAccessorMethod
{
  self.property = [[AClass alloc] init];
  [self.property release];
}

每当我需要设置一个非自动释放的 iVar 时,我都会使用上述设置属性的方式(保留对象),然后向其发送一条释放消息以抵消分配+保留。这与我看到的许多社区代码示例形成鲜明对比,在这些示例中,如果使用 alloc/create 创建对象,人们只需直接设置 iVar,从而消除了额外的释放。

除了额外的代码开销之外,我的风格是否存在任何性能缺陷?

最佳答案

不要这样做。如果您的属性被声明为具有copy语义,您的代码将泄漏第一个对象并过度释放第二个对象。

关于objective-c - cocoa /ObjC : Are there any performance drawbacks to my style of allocing objects for property iVars?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3324263/

相关文章:

mysql - MariaDB 服务器运行速度比我们可以复制的任何东西快 10 倍。想法为什么?

objective-c - cocoa 应用程序插件/糖?

objective-c - 如何访问首选项 Pane 包?

objective-c - 如何使用枚举类型?

ios - UILabel:背景相关颜色

objective-c - 追加到 NSTextView 并滚动

ios - 我如何在 GCD 中将一个 block 添加到调度队列的前面?

objective-c - 如何判断用户更改了 cocoa 中控件的值

memory-management - 如何在带有动态库的程序中使用 tcmalloc

memory - 为什么我无法分配 RAM 位数?