如何使用属性管理内存

时间:2013-02-02 13:43:50

标签: ios memory-management memory-leaks

my.h文件

@interface myObject : NSObject {
    NSMutableDictionary *myDictn ;
}

我有一个属性

@property (nonatomic,retain) NSMutableDictionary *myDictn ;

然后在.m文件中

我从id

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

我的问题是我已经提到保留财产并且我也分配了内存(保留计数转到2进入(id)初始化
那么如何在这种情况下管理记忆呢? 我是新手,因此对内存管理有很多想法。

如果我的代码中有method x并且我还将内存分配给myDictn,还有一件事情,那么在这种情况下我也可以使用release。 在此先感谢。

2 个答案:

答案 0 :(得分:0)

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

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

或者:

self.myDict = [NSMutableDictionary dictionary];

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

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

答案 1 :(得分:0)

您应首先参考Cocoa Fundamentals Guide。然后,如果您的目标是iOS> 4.3,您可以依靠Automatic Reference Counting进行内存管理。但一定要了解基本概念并阅读基本指南,否则你将浪费大量时间在黑暗中编程。