我在尝试将项目添加到封装在对象中的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时得到相同的结果。
答案 0 :(得分:2)
警告警告警告!!!
[super dealloc]
是您应该在-dealloc
方法中执行的最后事项,不是第一个
答案 1 :(得分:0)
这是一件好事,它只是显示了一个警告,当我做了同样的事情它已经崩溃。
原因是%@是一个对象占位符。但是count方法返回NSInteger,它是一个原始数据类型,它的占位符是%d,正如你在注释中正确注意到的那样。