我为类定义了一个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;
}
答案 0 :(得分:3)
您从未初始化varibs
,因此它是nil
。在Objective-c中向nil
发送任何消息,返回nil
- 所以
[[mySimul.varibs objectAtIndex:2] floatValue])
真的在说
[[nil objectAtIndex:2] floatvalue]
或
[nil floatvalue]
返回nil
,给定格式为
答案 1 :(得分:0)
您只需要在-(id)init
varibs = [[NSMutableArray alloc] init];