Я довольно новичок в Objective-C, большинство из них ясно, однако, когда дело доходит до управления памятью, я немного не хватает. В настоящее время мое приложение работает во время NSURLConnection, когда вызывается метод -(void)connectionDidFinishLoading:(NSURLConnection *)connection
, когда я ввожу метод для анализа некоторых данных, помещаю их в массив и возвращаю этот массив. Однако я не уверен, что это лучший способ сделать это, поскольку я не освобождаю массив из памяти в пользовательском методе (method1, см. Прилагаемый код)
Ниже приведен небольшой скрипт, чтобы лучше показать, что я делаю
.h файл
#import <UIKit/UIKit.h>
@interface memoryRetainTestViewController : UIViewController {
NSArray *mainArray;
}
@property (nonatomic, retain) NSArray *mainArray;
@end
.m файл
#import "memoryRetainTestViewController.h"
@implementation memoryRetainTestViewController
@synthesize mainArray;
// this would be the parsing method
-(NSArray*)method1
{
// ???: by not release this, is that bad. Or does it get released with mainArray
NSArray *newArray = [[NSArray alloc] init];
newArray = [NSArray arrayWithObjects:@"apple",@"orange", @"grapes", "peach", nil];
return newArray;
}
// this method is actually
// -(void)connectionDidFinishLoading:(NSURLConnection *)connection
-(void)method2
{
mainArray = [self method1];
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
mainArray = nil;
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[mainArray release];
[super dealloc];
}
@end