0

我的.h 文件

@interface myObject : NSObject {
    NSMutableDictionary *myDictn ;
}

我有财产

@property (nonatomic,retain) NSMutableDictionary *myDictn ;

然后在 .m 文件中

我从 id 分配了它

- (id)init {
    if (self=[super init]) {
        myDictn= [NSMutableDictionary  alloc]init];
    }
}

我的问题是我在 Property 中提到了 Retain 并且我也分配了内存(Retain Count 在 (id)init 中变为 2
那么在这种情况下如何管理内存?
我对此很陌生,所以对内存管理有很多想法。

还有一件事,如果method x我的代码中有 a 并且我也分配了内存,myDictn那么在这种情况下,我该如何使用 release .?? 提前致谢 。

4

2 回答 2

0

初始化保留属性的正确方法是:

NSMutableDictionary *newDict = [[NSMutableDictionary alloc] init];
self.myDictn = newDict;
[newDict release];

或者:

self.myDict = [NSMutableDictionary dictionary];

第一种方法通过对临时对象执行 alloc,init(增加保留计数的操作)来确保不增加已保留属性的保留计数。

第二种方法使用一种方便的方法来获取字典的自动释放实例。

于 2013-02-02T13:52:09.563 回答
0

您应该首先参考Cocoa Fundamentals Guide。然后,如果您的目标是 iOS > 4.3,则可以依靠自动引用计数来进行内存管理。但请务必了解基本概念并阅读基本指南,否则您将在黑暗中浪费大量时间进行编程。

于 2013-02-02T13:58:42.250 回答