gpt4 book ai didi

iphone - NSDictionary,这是为什么

转载 作者:行者123 更新时间:2023-12-03 21:09:35 24 4
gpt4 key购买 nike

我正在学习这个行业,目前专注于 NSDictionary。我目前正在做“Beginning iPhone Development Exploring the iPhone SDK”(Dave Mark/jeff LaMarche)一书中的示例。

我正在研究的示例位于第 7 章(第 166 页)“选项卡栏和选择器”中。

我想问他们为什么这样使用字典。

这是场景:

在.h文件中:

NSDictionary *stateZips;

.m 文件(viewDidLoad)有以下代码:

NSDictionary *dictionary = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
self.stateZips = dictionary;
[dictionary release];

我的问题是,是否有任何特定的 Objective-C 原因导致他们将字典复制到 stateZips,而不使用 stateZips 从 plist 进行初始化以避免额外的代码? ...或者这只是作者自己的做事方式?

最佳答案

.m 文件是否也有 stateZips 的 @synthesize 语句?我猜测是这样,因为分配的风格。

如果存在带有保留的属性声明以及 stateZips 的 @synthesize 语句,并且您执行以下操作:

self.stateZips = [[NSDictionary alloc] initWithContentsOfFile:plistPath];

你将会发生内存泄漏。在上面的语句中创建的字典在该语句之后的保留计数将为 2。一项保留用于分配,一项保留由合成的 setter 执行。

这是使用包含保留语句的 setter 的副作用,但如果您不使用带有保留语句的 setter,您可能会遇到更大的内存管理问题...;-)

为了更好地理解这些事情,您应该研究@property的分配和保留的使用以及合成的setter和getter背后的代码。

关于iphone - NSDictionary,这是为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4177232/

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