2013-11-26 74 views
0

我有一个数组,其中添加了对象,但即使在添加对象后数组仍保留为空。下面是代码:虽然添加了对象,但它仍然为空阵列

Event.h

@interface Event : NSObject 
@property NSString *name; 
@end 

代码中的对象被添加到阵列

NSMutableArray *events; 
NSArray *event_string = [NSArray arrayWithObjects:@"Egg Benedict", @"Mushroom Risotto", @"Full Breakfast", @"Hamburger", @"Ham and Egg Sandwich", @"Creme Brelee", @"White Chocolate Donut", @"Starbucks Coffee", @"Vegetable Curry", @"Instant Noodle with Egg", @"Noodle with BBQ Pork", @"Japanese Noodle with Pork", @"Green Tea", @"Thai Shrimp Cake", @"Angry Birds Cake", @"Ham and Cheese Panini", nil]; 

    for (NSString *currentEventString in event_string) { 
     Event *currentEvent = [Event new]; 
     [currentEvent setName:currentEventString]; 
     [events addObject:currentEvent]; 

    } 
    NSLog(@"Number of events:%d",[events count]); 

我得到这样的输出:

Number of events:0 
+2

初始化'事件'数组 –

回答

2

你必须启动事件数组如下:

NSMutableArray *events = [[NSMutableArray alloc]init]; 
3

你必须首先初始化这个数组。

NSMutableArray *events = [NSMutableArray new]; 
+0

它的工作原理,我不知道自己怎么能忘记这个! – Noor

2

什么托马斯说 - 你需要分配和初始化数组。现在指向数组对象的指针是null。

你得到奇怪结果的原因是Objective C(不像Java,C++和C#等语言)会很乐意让你调用null对象的方法而不会崩溃或抛出异常。结果是“0”值,例如指针/对象的空值,0用于计算等。

它有点不同,但实际上它运行良好,并简化了许多算法。

相关问题