0
为了给这个故事的简短版本,我试图做一个内存泄漏的例子,以及为什么你想要在Instruments应用程序中使用泄漏性能工具。我需要使用这种检测内存泄漏的方法,但是我创建的示例并没有创建该工具检测到的任何内存泄漏(是的,显然我在这里失败了 - -_-)。下面的代码:泄漏性能工具没有检测到明显的内存泄漏
// Memory_Leak_ExampleViewController.h
// Memory Leak Example
#import <UIKit/UIKit.h>
#import "StringReturner.h"
@interface Memory_Leak_ExampleViewController : UIViewController {
IBOutlet UITextField* xTF;
IBOutlet UITextField* yTF;
IBOutlet UITextView* result;
StringReturner* sr;
}
-(IBAction)addTogether;
-(IBAction)releaseSR;
@end
// Memory_Leak_ExampleViewController.m
// Memory Leak Example
#import "Memory_Leak_ExampleViewController.h"
@implementation Memory_Leak_ExampleViewController
- (void)viewDidLoad {
[super viewDidLoad];
sr = [[StringReturner alloc] initWithFrame:self.view.frame];
}
- (IBAction)addTogether
{
[result setText:[sr returnEq:[xTF.text intValue]:[yTF.text intValue]]];
}
- (IBAction)releaseSR
{
[sr release];
}
@end
//StringReturner.h
#import <UIKit/UIKit.h>
@interface StringReturner : UIView {
NSString* string;
NSString* returnString;
}
-(NSString*)returnEq:(int)x:(int)y;
@end
// StringReturner.m
#import "StringReturner.h"
@implementation StringReturner
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
}
return self;
}
- (NSString*)returnEq:(int)x:(int)y
{
string = [[NSString alloc] initWithString:@""];
int result = x+y;
string = [NSString stringWithFormat:@"%d + %d = %d", x, y, result];
return string;
}
- (void)dealloc {
[super dealloc];
}
@end
所有IBActions和IBOutlets都设置正确,所以不应该有内存泄漏增加一次,然后释放StringReturner的实例后?如果没有,我在不是做错了什么?
我想我只是吹走你的评论。抱歉。但要回答你的问题,可以泄漏'format'系列函数创建的任何字符串。 – dbv 2012-03-02 16:51:02