gpt4 book ai didi

objective-c - 局部变量赋值与直接赋值;属性和内存

转载 作者:行者123 更新时间:2023-12-04 03:18:04 26 4
gpt4 key购买 nike

在 objective-c 中,我看到很多示例代码,其中作者分配一个局部变量,将其分配给一个属性,然后释放局部变量。这样做有实际原因吗?在大多数情况下,我一直只是直接分配给该属性。这会以任何方式导致内存泄漏吗?我想我想知道这之间是否有任何区别:

HomeScreenBtns *localHomeScreenBtns = [[HomeScreenBtns alloc] init];
self.homeScreenBtns = localHomeScreenBtns;
[localHomeScreenBtns release];

还有这个:

self.homeScreenBtns = [[HomeScreenBtns alloc] init];

假设 homeScreenBtns 是这样的属性:

@property (nonatomic, retain) HomeScreenBtns *homeScreenBtns;

我正准备将我的应用程序提交到应用商店,所以我处于完全优化/QA 模式。

最佳答案

假设:

@property (nonatomic,retain) HomeScreenBtns *homeScreenBtns;
  1. HomeScreenBtns *localHomeScreenBtns= [[HomeScreenBtns 分配] 初始化];
  2. self.homeScreenBtns =localHomeScreenBtns;
  3. [localHomeScreenBtns 发布];

然后 (1) 暗示一个 retain。 (2) 暗示第二个 retain 因为属性是这么说的。 (3) 释放 (1) 创建的本地作用域中的 retain

如果不执行 (3),最终会泄漏。

所有这些都记录在 memory management guide.

关于objective-c - 局部变量赋值与直接赋值;属性和内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3066848/

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