我现在这是一个愚蠢的问题,但我仍然对这个案子有一些不太了解。它是关于内存管理和引用计数,我有一些疑问,如果我使用copy,alloc和mutable copy,将增加多少引用计数。这是我的代码:
这是myController.h:
#import <UIKit/UIKit.h>
@interface myController : UIViewController {
NSMutableString *mutableStringCode;
}
@property (nonatomic, copy) NSMutableString *mutableStringCode;
@end
这是myController.m
#import "myController.h"
@implementation myController
-(void)viewDidLoad{
mutableStringCode = [[NSMutableStringCode alloc]init];
[self refresh];
}
-(void)refresh{
NSMutableString *myFileContents = [NSMutableString stringWithContentsOfFile:localPath encoding:NSUTF8StringEncoding error:&error];
mutableStringCode = [myFileContents mutableCopy];
//another code
myFileContents = nil;
}
-(void)dealloc{
[mutableStringCode release];
[super dealloc];
}
@end
在这段代码中,我有些疑惑:
1. mutableStringCode中引用计数增加了多少?
2.使用mutableStringCode
而不是copy
设置retain
属性的真实方法是什么?
3.我在财产上设置副本后仍需要分配mutableStringCode
吗?
有人可以向我描述一下吗? 谢谢
答案 0 :(得分:0)
我在这里看到的主要问题是在刷新期间你没有释放已经创建的mutableStringCode。所以它保留在内存中(通常是内存泄漏)。
您可以尝试使用Analyze或使用Instruments的Leaks工具捕获这些类型的内存泄漏。