将对象添加到NSMutableArray时出错

时间:2010-07-26 22:02:44

标签: iphone objective-c 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];

任何人都可以告诉我为什么这会在调用count时抛出错误?

我还尝试将Mutable Array复制到局部变量,并在调用局部变量上的count时得到相同的结果。

2 个答案:

答案 0 :(得分:2)

警告警告警告!!!

[super dealloc]是您应该在-dealloc方法中执行的最后事项,不是第一个

答案 1 :(得分:0)

这是一件好事,它只是显示了一个警告,当我做了同样的事情它已经崩溃。

原因是%@是一个对象占位符。但是count方法返回NSInteger,它是一个原始数据类型,它的占位符是%d,正如你在注释中正确注意到的那样。