为什么变量是NULL?

为什么变量是NULL?

问题描述:

我遇到了一个问题,为iPhone开发一个应用程序。 我必须做一个测验。 测验是在NSArray中,每个问题都有一个标题,一些答案和一个答案分数。 所有这些信息都在NSMutableArray中。为什么变量是NULL?

当我尝试打印值“分数”为例,我获得一个NULL,而不是数字。

例子: MYCOMMON.H

#import <Foundation/Foundation.h> 
#import "FBConnect/FBConnect.h" 


@interface MyCommon : NSObject <FBRequestDelegate,FBDialogDelegate,FBSessionDelegate> 
{ 

    NSArray *quizz; 
    int iCurrentQuestion; 
    int iScore; 
    int iRep; 

    NSArray *permissions; 

}; 

+ (MyCommon *)Singleton; 


@property (nonatomic, retain) NSArray *quizz; 
@property (assign) int iCurrentQuestion; 
@property (retain,nonatomic) NSArray *permissions; 
@property (assign) int iScore; 
@property (assign) int iRep; 
@end 


    MYCOMMON.M 
@implementation MyCommon 

static MyCommon * SingletonManager = nil; 

@synthesize iCurrentQuestion, iScore, iRep; 
@synthesize quizz; 


-(id)init { 

    if (self = [super init]) { 

    iCurrentQuestion = 0; 
     iRep = 0; 
     iScore = 0; 

     permissions = [[NSArray arrayWithObjects:@"publish_stream",nil] retain]; 

    } 
    return self; 

} 

-(void)dealloc { 

    // Do things 
    [ super dealloc ]; 

} 

- (int)GetScoreForReponse 
{  


    MyCommon *pCommon = [MyCommon Singleton]; 

    NSLog(@"GetScoreForReponse iScore : %@, pCommon.iScore); 

    NSDictionary *dataItem = [quizz objectAtIndex:iCurrentQuestion]; 


    int add_score = 0; 

    if (iRep == 1) 
    { 
      add_score = [[dataItem objectForKey:@"score1"]intValue]; 
    } 
    else if (iRep == 2) 
    { 

     add_score = [[dataItem objectForKey:@"score2"]intValue]; 
    } 
    else if (iRep == 3) 
    { 
     add_score = [[dataItem objectForKey:@"score3"]intValue]; 
    } 
    else if (iRep == 4) 
    { 
     add_score = [[dataItem objectForKey:@"score4"]intValue]; 
    } 
    else if (iRep == 5) 
    { 
     add_score = [[dataItem objectForKey:@"score5"]intValue]; 
    } 
    else 
     NSLog(@"error !"); 

    return add_score; 
} 

感谢帮助!

+0

这是否编译?这条线似乎格格不入我'NSLog(@“GetScoreForReponse iScore:%@,pCommon.iScore);' – 2011-05-03 15:28:57

+0

在一个侧面说明,是泄漏内存与双重保留许可NSArray的内存? – tomasmcguinness 2011-05-03 15:32:36

您试图使用%@打印存储在iScore中的地址所引用的Objective-C对象的描述,而不是使用%d。如果iScore不为零,那可能会导致崩溃而不是NULL。

NSLog(@"GetScoreForReponse iScore : %d", pCommon.iScore); 

以下是String Format Specifiers的列表。