如何理解哪个属性适合 NSDictionary 例如。保留还是分配?

发布于 2024-10-13 06:21:01 字数 138 浏览 5 评论 0原文

现在我使用

@property (nonatomic, retain) NSDictionary *currentAttribute;

如果我使用复制或分配而不是保留,内存性能是否会有更大差异?

now i using

@property (nonatomic, retain) NSDictionary *currentAttribute;

if i use copy or assign instead of retain is it more difference in memory performance?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眼眸印温柔 2024-10-20 06:21:01

声明它 copy 意味着您将获得一个全新的 NSDictionary 对象,供您的类使用。如果它是一个相当大的字典,这可能会影响性能;不是很引人注目,但无论如何都很重要。通过保留它,您只需为您的类提供指向同一NSDictionary实例的自己的指针即可。

如果 NSDictionary 自动释放,声明它 assign 会使您的应用程序面临崩溃的风险。如果它最终进入池并因池将其保留计数减少到 0 而被释放,您的类将无法再访问它,从而导致崩溃。

Declaring it copy would mean you get an entirely new NSDictionary object for use with your class. If it's quite a large dictionary this can be a performance hit; not very noticeable, but significant anyway. By retaining it, you simply give your class its own pointer to the same NSDictionary instance.

Declaring it assign puts your application at risk of crashing in case the NSDictionary is autoreleased. If it ends up in the pool and gets deallocated because the pool reduced its retain count to 0, your class won't get to access it anymore, causing a crash.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文