Это утечка памяти? - PullRequest
       3

Это утечка памяти?

3 голосов
/ 15 февраля 2010

У меня что-то похожее на это.

initMyclass {
 if (self= [super init]) {
   classMember = [[NSMutableArray alloc] init];
 }
 return self;
}

Прибор сообщает об утечке.

У меня там утечка памяти? Если нет, xcode сообщает о ложных утечках памяти?

Спасибо.

Ответы [ 3 ]

5 голосов
/ 15 февраля 2010

Прибор сообщает об утечке, потому что вы не выпускаете объект в другом месте. Вам нужно иметь [classMember release] в методе dealloc этого класса:

- (void) dealloc {
  [classMember release];
  [super dealloc];
}
1 голос
/ 15 февраля 2010

Вот почему вы должны использовать свойства или явные методы доступа.

Если у вас было это:

@interface myObject : NSObject
{
    NSMutableArray *classMembers;
}
@property(nonatomic, retain)  NSMutableArray *classMembers;

@end

@implementation myObject
@synthesize classMembers;

-(id) init{
    if (self=[super init]) {
        self.classMembers=[[NSMutableArray alloc] initWithCapacity:1];
    }
    return self;
}//-------------------------------------(id) init------------------------------------

-(void) dealloc{
    [classMembers release];
    [super dealloc];
}//-------------------------------------(void) dealloc------------------------------------

@end

Вы не должны (и никогда не должны) скучать по удержанию имущества. Это устраняет все утечки и чрезмерное высвобождение свойств.

Если объект свойства утекает, то вы автоматически знаете, что он сохраняется в другом объекте, кроме экземпляра класса, содержащего свойство.

0 голосов
/ 15 февраля 2010

Это класс или экземпляр член?Покажите нам @interface для этого класса.

Кроме того, initMyClass .. или что-то еще ... не является правильным методом init.Его подпись должна иметь вид:

- (id) init {
    if ((self = [super init]) != nil) {
        someInstanceVariable = [NSMutableArray new];
    }
    return self;
}

Если вы зададите вопрос здесь, укажите более конкретно.

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