Ale*_*lea 2 arrays iphone objective-c
我试图检测一个数组是否为空,以便能够进行某个调用.我尝试使用if (![array ==nil])但不编译.我相信对此有一个非常简单的解释.
如果数组为空,我想这样做:
array = [[NSMutableArray alloc]init];
Run Code Online (Sandbox Code Playgroud)
如果它有一个对象我想这样做:
array = [[userDefaults arrayForKey:@"MyFavorites"] mutableCopy];
Run Code Online (Sandbox Code Playgroud)
如果您声明它但根本没有分配任何东西:
NSMutableArray *array;
Run Code Online (Sandbox Code Playgroud)
然后数组将是nil,意味着它根本不存在,所以你不能说它是否为空,所以你不能检查任何东西.
如果您确实为其分配了某些内容,并且想要查明现有数组是否为空,那将取决于您首先创建它的方式.
如果数组是从某种方便方法分配的,那么它是自动释放的,所以只需这样做:
if ([array count] == 0) {
array = [[NSMutableArray alloc] init];
} else {
array = [[userDefaults arrayForKey:@"MyFavorites"] mutableCopy];
}
Run Code Online (Sandbox Code Playgroud)如果数组是从init或copy方法分配的,或者之前保留过,则将计数存储在临时变量中,释放数组并使用临时变量来决定要执行的操作:
NSInteger count = [array count];
[array release];
if (count == 0) {
array = [[NSMutableArray alloc] init];
} else {
array = [[userDefaults arrayForKey:@"MyFavorites"] mutableCopy];
}
Run Code Online (Sandbox Code Playgroud)