2010-07-26 3 views
0

Я получаю ошибки при попытке добавить элементы в NSMutableArray, который инкапсулируется внутри объекта.Ошибка При добавлении объекта в NSMutableArray

код следующим образом:

#import <Foundation/Foundation.h> 


@interface TestObject : NSObject { 
    NSMutableArray *myArray; 
} 

@property (nonatomic, retain) NSMutableArray *myArray; 


@end 

#import "TestObject.h" 


@implementation TestObject 

@synthesize myArray; 

- (id) init { 
    if(self= [super init]){ 
     // Initialise the Mutable Array 
     myArray = [[NSMutableArray alloc] init]; 
    } 
    return self; 
} 

- (void) dealloc { 
    [super dealloc]; 
    [myArray release]; 
} 
@end 

Призвание:

TestObject *testObject = [[TestObject alloc] init]; 
    NSString *someString = @"blah blah blah"; 
    NSLog(@"%@", someString); 
    [testObject.myArray addObject:someString]; 
    NSLog(@"Test Object Array Count: %@", [testObject.myArray count]); 
    [testObject release]; 

Может кто-нибудь сказать мне, почему это выдает ошибку при вызове счета?

Я также попытался скопировать Mutable Array в локальную переменную и получить тот же результат при вызове count для локальной переменной.

+0

Исправлена ​​ошибка. NSLog (@ "Test Object Array Count:% d", [testObject.myArray count]); –

+1

Не пытайтесь ответить на ваш вопрос, но я настоятельно рекомендую переместить этот вызов [myArray release] в ваш -dealloc до того, как вы сделаете супервызов. – Benjamin

+0

Спасибо, Бенджамин, немного недосмотр с моей стороны. Я набрал этот код вручную в Safari, так как у меня нет xcode на этой машине. –

ответ

2

Предупреждение о предупреждении!

[super dealloc] является последней вещи, которую вы должны сделать в вашем методе -dealloc, не первый!

0

Хорошо, что это только что показало предупреждение, когда я сделал то же самое, что он разбился.

Причина в том, что% @ является объектом-заполнителем объекта. Но метод count возвращает NSInteger, который является примитивным типом данных, а placeholder для него -% d, как вы правильно отметили в комментарии.

Смежные вопросы