控制处理不当是引起程序错误乃至崩溃的重要原因之一。
因为Object-C的集合对象,如NSArray、NSDictionary、NSSet等,都有可能包含NSNull对象,所以,如果一下代码中的item为NSNull,则会引起程序崩溃。
NSString *item=[NSArray objectAtIndex:i]; if([item isEqualToString:@"TestNumber"]) { // } 以下代码是常见的错误,release对象没有设置为nil,从而引起程序崩溃。 id someObject=[[Object alloc] init]; //... [someObject release]; //... if(someObject) { //crash here }
//判断对象不空 if(object) {} //判断对象为空 if(object == nil) {} //数组初始化,空值结束 NSArray *pageNames=[[NSArray alloc] initWithObjects:@"DocumentList",@"AdvancedSearch",@"Statistics",nil]; //判断数组元素是否为空 UIViewController *controller=[NSArray objectAtIndex:i]; if((NSNull *)controller == [NSNull null]) { // } //判断字典对象的元素是否为空 NSString *userId=[NSDictionary objectForKey:@"UserId"]; if(userId == [NSNull null]) { // }
person=nil; [person castBallot]; NSLog("person=%@",person);