【发布时间】:2010-06-05 18:10:59
【问题描述】:
我正在学习 Objective-C。我正在尝试释放我使用的所有内存。所以,我写了一个程序来测试我是否做得对:
#import <Foundation/Foundation.h>
#define DEFAULT_NAME @"Unknown"
@interface Person : NSObject
{
NSString *name;
}
@property (copy) NSString * name;
@end
@implementation Person
@synthesize name;
- (void) dealloc {
[name release];
[super dealloc];
}
- (id) init {
if (self = [super init]) {
name = DEFAULT_NAME;
}
return self;
}
@end
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
Person *person = [[Person alloc] init];
NSString *str;
int i;
for (i = 0; i < 1e9; i++) {
str = [NSString stringWithCString: "Name" encoding: NSUTF8StringEncoding];
person.name = str;
[str release];
}
[person release];
[pool drain];
return 0;
}
我正在使用带有雪豹的 Mac。为了测试它使用了多少内存,我在它运行的同时打开了 Activity Monitor。几秒钟后,它正在使用千兆字节的内存。我该怎么做才能让它不使用那么多?
【问题讨论】:
标签: objective-c memory