我对Objective C感到很疯狂。请查看以下代码。
FirstViewController.h:
@interface FirstViewController : UIViewController {
IBOutlet UITextView *textView;
IBOutlet UIBarButtonItem *button;
NSString* superString;
}
- (IBAction)buttonDown;
FirstViewController.m:
- (void)viewDidLoad {
[super viewDidLoad];
superString = [NSString stringWithFormat:"%@", @"A_super_string_file.txt"];
[self buttonDown];
}
- (IBAction)buttonDown {
NSError* err = nil;
NSString* text = [NSString stringWithContentsOfFile:superString encoding:NSUTF8StringEncoding error:&err];
[textView setText:text];
}
会发生什么?我是技能开发人员但在这种情况下不知道。非常感谢您的帮助!
更新:可能,它在工作中隐藏了自动释放。但是当它释放内存?每次或在某个确切时刻的不同时刻?
答案 0 :(得分:4)
NSString
的+ stringWithFormat
:自动释放。如果你想让它留在身边,你需要保留它。
属性是一种很好的方法,因为它可以减少您需要担心的内存管理量。
·H
@interface FirstViewController : UIViewController {
IBOutlet UITextView *textView;
IBOutlet UIBarButtonItem *button;
NSString* superString;
}
@property (nonatomic, copy) NSString* superString;
- (IBAction)buttonDown;
的.m
@synthesize superString
- (void)viewDidLoad {
[super viewDidLoad];
[self setSuperString:[NSString stringWithFormat:"%@", @"A_super_string_file.txt"]];
[self buttonDown];
}
- (IBAction)buttonDown {
NSError* err = nil;
NSString* text = [NSString stringWithContentsOfFile:superString encoding:NSUTF8StringEncoding error:&err];
[textView setText:text];
}
- (void)dealloc {
[superString release];
[super dealloc];
}
答案 1 :(得分:1)
您需要保留superString。
[superString retain];
创建后立即。
然后以dealloc发布它。