不初始化NSMutableArray行为错误的类的属性?

时间:2015-01-19 07:35:09

标签: ios objective-c class properties nsmutablearray

我为类定义了一个NSMutableArray属性,如下所示:

@interface Simul : NSObject

@property NSMutableArray * varibs;

@end

@implementation Simul

@synthesize varibs;

-(id) init{

self=[super init];

if (self) {
   NSLog(@"I am initiated"); 
}
return self;
}

现在,在主要功能中,以下进行并打印:

2015-01-18 23:27:06.534 calculate_x [4881:189850] 0.0000

程序以退出代码结束:0

但是,我们在NSMutableArray变量varibs中没有index = 2的对象。

这里发生了什么? 为什么索引2指定的非现有对象没有运行时错误?

感谢。

int main(int argc, const char * argv[]) {`
@autoreleasepool {

    Simul * mySimul = [[Simul alloc] init];
    NSLog(@"%.4f", [[mySimul.varibs objectAtIndex:2] floatValue]);

}
return 0;
}

2 个答案:

答案 0 :(得分:3)

您从未初始化varibs,因此它是nil。在Objective-c中向nil发送任何消息,返回nil - 所以

[[mySimul.varibs objectAtIndex:2] floatValue])

真的在说

 [[nil objectAtIndex:2] floatvalue] 

 [nil floatvalue]

返回nil,给定格式为

,为0,0为浮点数为0.0

答案 1 :(得分:0)

您只需要在-(id)init

中初始化它
varibs = [[NSMutableArray alloc] init];