无法在Objective C中向NSMutableArray添加对象

时间:2009-05-12 09:25:04

标签: objective-c iphone cocoa cocoa-touch

我正在使用iPhone SDK并且遇到一个简单的问题。我正在尝试将 NSNumber 对象添加到 NSMutableArray 实例变量中。我尝试将NSNumber 添加到NSMutableArray seenCardsArray ,但不会中断,它不会添加到数组中。这是代码。


/////////////////////////////////////////////////////
// Inside the header file Class.h
@interface MyViewController : UIViewController {
   NSMutableArray *viewedCardsArray;
   //snip ...
}
@property (nonatomic, retain) NSMutableArray *viewedCardsArray;
@end

/////////////////////////////////////////////////////
// Inside the methods file Class.m
#import "StudyViewController.h"

@implementation StudyViewController
@synthesize viewedCardsArray
  //snip ...

- (IBAction)doShowCard {
   //snip ...
   NSNumber *cardIdObject = [[NSNumber alloc] initWithInt:(int)[self.currentCard cardId]];
   [viewedCardsArray addObject: cardIdObject];
   [cardIdObject release];
}

所以这段代码执行,似乎没有泄漏(根据Leaks性能工具)。但是,当单步执行代码时, CardIdObject 出现在 seenCardsArray 中。

通过搜索,我知道这些基本问题对ObjC新手(像我一样)非常普遍,所以请提前道歉!

2 个答案:

答案 0 :(得分:17)

您是否初始化了viewedCardsArray?如果不是你需要某个地方 - 这通常是在你班级的init方法中完成的:

- (id)init
{
    self = [super init];
    if(self) {
        viewedCardsArray = [[NSMutableArray alloc] init];
    }
    return self;
}

然后它以dealloc方法发布:

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

答案 1 :(得分:3)

Perspx概述了一种初始化阵列的方法。但是,您也可以使用NSArray提供的类方法:

self. viewedCardsArray = [NSMutableArray array];

这可以在init或其他地方进行。

注意:该对象将被自动释放。