почему инструмент утечки iphone-xcode показывает утечку для этого кода? - PullRequest
0 голосов
/ 25 октября 2010

Я прошел через приложение, используя сборку / анализ, и смог решить все проблемы.

, но работает под утечкой, он обнаруживает утечку и говорит, что это происходит из tvc: viewDidLoad, где tvc является tableViewController

он далее ссылается на NSArray -> sectionlist

показывает malloc refct = 1 тогда оставьте refct = 2 тогда refct релиза = 1

здесь viewDidLoad, за которым следуют dealloc и заголовок

Я не вижу, в чем проблема? Я что-то упустил?

кроме кода, который я включил, на sectionList ссылаются только в 2 других местах -

  1. в числе разделов строк

    return [[self sectionList] count];

  2. в cellForRowAtIndexPath

    [[cell textLabel] setText: [[self sectionList] objectAtIndex: indexPath.row]];

это красная сельдь? то есть; это реальная утечка или инструмент утечки способен только отображать alloc, но затем не показывает, где происходит освобождение в dealloc, когда tvc выгружается позже?

enter code here

/// code 
////////////////////////

// property
@synthesize sectionList = ivSectionList;

/*
*********************************************
build list of sections
*********************************************
*/
- (void)viewDidLoad
{
[super viewDidLoad];  

// alloc a local array and init with values  
NSArray *sections = [[NSArray alloc] initWithObjects:@"A", @"B", @"C", nil];

// assign local array to tvc ivar  
[self setSectionList:sections];

// release local array  
[sections release], sections=nil;
}


/*
*********************************************
release ivSectionList
*********************************************
*/
- (void)dealloc
{
[ivsectionList release], ivsectionList=nil;
[super dealloc];
}


//////// header
////////////////////////////////////////
#import <UIKit/UIKit.h>

@interface tvc : UITableViewController
{
NSArray *ivsectionList;
}

@property (nonatomic, retain) NSArray *sectionList;
@end
//////////////////////////////////////// 

1 Ответ

1 голос
/ 25 октября 2010

утечек (или инструментов) сообщает вам, где произошла утечка созданного .

Скорее всего, клиент не выпускает его.

подкласс также может использовать этот класс не по назначению. Хорошей идеей будет сделать ваши ивары @private по умолчанию.

в качестве альтернативы, вы можете попробовать atomic чтение / запись, на случай, если в этом случае возникнет проблема с многопоточностью.

(но да, выдержка выглядит правильно)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...