Я сделал пример проекта, который воспроизводит эту проблему, которая содержит два представления:
корневой заголовок:
#import <UIKit/UIKit.h>
#import "view2.h"
@interface RootViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>{
view2 *secondView;
UITableView *table;
NSArray *array;
}
@property (nonatomic, retain) view2 *secondView;
@property (nonatomic, retain) IBOutlet UITableView *table;
@property (nonatomic, retain) NSArray *array;
@end
root main:
#import "RootViewController.h"
@implementation RootViewController
@synthesize table, array, secondView;
- (void)viewDidLoad
{
[super viewDidLoad];
if(self.array == nil){
self.array = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", nil];
}
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
}
- (void)viewDidUnload
{
[super viewDidUnload];
table = nil;
array = nil;
secondView = nil;
}
- (void)dealloc
{
[table release];
[array release];
[secondView release];
[super dealloc];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [array count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
cell.textLabel.text = [array objectAtIndex:indexPath.row];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (secondView == nil) {
secondView = [[view2 alloc] init];
}
[self.navigationController pushViewController:secondView animated:YES];
}
@end
view2 simpleсодержит метку с текстом «view 2» для идентификации.Весь этот код делает в корневом контроллере создание массива со значениями 1,2,3,4 и привязывает этот текст как строки к таблице, щелкая любую строку, помещая представление 2 в стек.если вы загружаете приложение в симуляторе с помощью инструмента инструментов утечки, щелкните любую строку, чтобы отобразить view2, а затем смоделируйте предупреждение об ошибке, появятся следующие утечки: image для строки:
self.array = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", nil];
это вызывает у меня много проблем в моем основном приложении, так как я использую массивы для представления данных в таблицах повсюду.
Я пробовал различные способы исправить это, например, объявитьМассив по-разному безрезультатно.
любая помощь очень ценится!
спасибо