在目标C中向NSMutableArray添加对象时遇到困难

在目标C中向NSMutableArray添加对象时遇到困难

我正在使用iPhoneSDK,有一个问题是做一些简单的事情。我试图添加一个NSNumber对象的NSMutableArray实例变量。我试着添加NSNumber卡片到NSMutableArray视觉卡阵列但是,在没有中断的情况下,它不会被添加到数组中。这是密码。

/////////////////////////////////////////////////////// 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];}

因此,此代码将执行,并且似乎不会泄漏(根据泄漏性能工具)。但是,当逐步执行代码时,在任何时候都不会。CardIdObject出现在视觉卡阵列.

综上所述,我知道这些基本问题对于objc新手(像我一样)来说是很常见的,所以提前道歉吧!


撒科打诨
浏览 498回答 3
3回答

aluckdog

您是否初始化了viewedCardsArray?如果没有,您需要找个地方-这通常是在init方法:- (id)init{     self = [super init];     if(self) {         viewedCardsArray = [[NSMutableArray alloc] init];     }     return self;}然后在dealloc方法:- (void)dealloc{     [viewedCardsArray release];     [super dealloc];}

扬帆大鱼

Perspx概述了初始化数组的一种方法。但是,还可以使用NSArray提供的类方法:self. viewedCardsArray = [NSMutableArray array];这可以进入它的内部或其他地方。注意:对象将自动释放。

慕田峪4524236

不要忘记使用[超级init]的结果。它可以返回零或另一个对象。永远不要假设它返回了你以前的自我,因为当它不返回的时候,它就会释放它,如果你对这个死掉的对象做进一步的初始化,很可能会导致崩溃。最简单的方法是如果(Self=[Superinit]){/*初始化这里*/}返回Self;(取决于您自己的风格-例如,您可以在条件之前进行赋值,如果您愿意的话)。
打开App,查看更多内容
随时随地看视频慕课网APP