【问题标题】:Memory management (objective-c)内存管理(objective-c)
【发布时间】:2012-07-06 05:44:11
【问题描述】:

我有一个类 AudioInfo,其中包含一些 NSString 对象。

main() 中,我创建(分配)了一些AudioInfo 对象。

稍后在main() 中,我希望第二个AudioInfo 对象具有相同的NSString 对象。

init 第二个,NSStrings 来自第一个。

问题:

我是否应该在创建(分配)第二个对象后保留第一个 AudioInfo 对象以使它们都具有保留计数 = 1?

【问题讨论】:

    标签: objective-c ios xcode memory-management allocation


    【解决方案1】:

    在这种情况下,AudioInfo 应该简单地将字符串属性 copy 传递给它的 ivars(默认情况下,您应该声明您的 NSString 属性 copy)并且每个实例都将管理自己的引用。然后在您使用完 AudioInfo 实例后释放它们。仅此而已。

    【讨论】:

    • 好吧,如果我不能使用copy怎么办?
    • 我想用init方法,至少有一个NSStrings会不一样
    • @property (nonatomic, copy) NSString *artist;我应该这样做吗?
    • @iWheelBuy 您当然可以在这种情况下复制字符串。发布一些代码并指出您面临的障碍。
    • 嘿贾斯汀,我刚刚理解了整个@property 的事情!一切正常!感谢您指出“财产”问题!
    猜你喜欢
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    • 2011-05-11
    相关资源
    最近更新 更多