【发布时间】:2010-07-26 22:02:43
【问题描述】:
尝试将项目添加到封装在对象中的 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 时会抛出错误?
我也尝试将可变数组复制到局部变量,并在对局部变量调用 count 时得到相同的结果。
【问题讨论】:
-
修复了我自己的问题。 NSLog(@"Test Object Array Count: %d", [testObject.myArray count]);
-
不想回答您的问题,但我强烈建议您将 -dealloc 中的 [myArray release] 调用移至执行超级调用之前。
-
谢谢本杰明,我的疏忽不大。我在 Safari 中手动输入了该代码,因为这台机器上没有 xcode。
标签: iphone objective-c nsmutablearray