场景描述:判断一个集合是否为空,如果不为空执行A,如果为空执行B

Java实现方法

public void exec(){
List<String> list = this.getContent();
if (null != list && list.size()>0) {
//do something
}else{
//do nothing
}
}

IOS如何实现?先看下下面代码执行结果

- (void)viewDidLoad
{
[super viewDidLoad]; NSArray *ary ;
[self show:ary]; ary = nil;
[self show:ary]; ary = [[NSArray alloc]init];
[self show:ary]; ary = [NSMutableArray arrayWithObjects:@"11111", @"222",nil];
[self show:ary];
}
-(void) show:(NSArray *)ary{
NSLog(@"数组内容:%@",ary);
NSLog(@"数组class:%@",[ary class]); if (![ary isKindOfClass:[NSNull class]]) {
NSLog(@"NOT!!! isKindOfClass null");
}else{
NSLog(@"isKindOfClass null");
}
if (ary) {
NSLog(@"====非空=====");
}else{
NSLog(@"====空=====");
}
if (ary.count == 0) {
NSLog(@"count is 0");
}else{
NSLog(@"count is %lu",(unsigned long)ary.count);
}
NSLog(@"=====================华丽的分割线=======================");
}

执行结果如下:

2014-07-29 15:51:55.209 MyTempTest[297:60b]数组内容:(null)

2014-07-29 15:51:55.211 MyTempTest[297:60b]数组class(null)

2014-07-29 15:51:55.212 MyTempTest[297:60b] NOT!!!   isKindOfClass null

2014-07-29 15:51:55.213 MyTempTest[297:60b] =========

2014-07-29 15:51:55.215 MyTempTest[297:60b] count is 0

2014-07-29 15:51:55.216 MyTempTest[297:60b] =====================华丽的分割线=======================

2014-07-29 15:51:55.217 MyTempTest[297:60b]数组内容:(null)

2014-07-29 15:51:55.218 MyTempTest[297:60b]数组class(null)

2014-07-29 15:51:55.219 MyTempTest[297:60b] NOT!!!   isKindOfClass null

2014-07-29 15:51:55.220 MyTempTest[297:60b] =========

2014-07-29 15:51:55.221 MyTempTest[297:60b] count is 0

2014-07-29 15:51:55.222 MyTempTest[297:60b] =====================华丽的分割线=======================



2014-07-29 15:51:55.223 MyTempTest[297:60b]数组内容:(

)

2014-07-29 15:51:55.225 MyTempTest[297:60b]数组class__NSArrayI

2014-07-29 15:51:55.226 MyTempTest[297:60b] NOT!!!   isKindOfClass null

2014-07-29 15:51:55.227 MyTempTest[297:60b] ====非空=====

2014-07-29 15:51:55.228 MyTempTest[297:60b] count is 0

2014-07-29 15:51:55.229 MyTempTest[297:60b] =====================华丽的分割线=======================



2014-07-29 15:51:55.230 MyTempTest[297:60b]数组内容:(

    11111,

    222

)

2014-07-29 15:51:55.231 MyTempTest[297:60b]数组class__NSArrayM

2014-07-29 15:51:55.232 MyTempTest[297:60b] NOT!!!   isKindOfClass null

2014-07-29 15:51:55.233 MyTempTest[297:60b] ====非空=====

2014-07-29 15:51:55.234 MyTempTest[297:60b] count is 2

2014-07-29 15:51:55.235 MyTempTest[297:60b] =====================华丽的分割线=======================

结论:IOS判断一个数组是否为空,直接判断“ary.count”即可,即使ary尚未初始化也不会报“空指针”。

NSString *str ;
NSLog(@"%lu",(unsigned long)str.length);

2014-07-30 08:40:52.851 MyTempTest[391:60b] 0

objective-c里面声明一个类型,未初始化,直接调用方法都不报错?

IOS判断NSArray是否为空的更多相关文章

  1. iOS 判断数组是否为空

    有人说可以用([array count]==0 )来判断是否为空,都是坑,如果array为空的话,执行count就会直接报错,程序崩溃退出. 正确判断NSArray是否为空的方法:用 (!array) ...

  2. iOS判断数组不为空

    用([array count]==0 )来判断是否为空,都是坑,如果array为空的话,执行count就会直接报错,程序崩溃退出. 正确判断NSArray是否为空的方法: if(array != ni ...

  3. iOS 判断字符串是否为空

    写一个字符串的扩展,实现判断字符串是否为空- (BOOL) isBlankString { if ([self isEqualToString:@"(null)"]) { retu ...

  4. iOS 判断数组不为空

    if (array != nil && ![array isKindOfClass:[NSNull class]] && array.count != 0)

  5. iOS 中的block异常 判断block是否为空

    我们在调用block时,如果这个block为nil,则程序会崩溃,报类似于EXC_BAD_ACCESS(code=1, address=0xc)异常[32位下的结果,如果是64位,则address=0 ...

  6. iOS数组的去重,判空,删除元素,删除重复元素 model排序 等

    一: 去重 有时需要将NSArray中去除重复的元素,而存在NSArray中的元素不一定都是NSString类型.今天想了想,加上朋友的帮助,想到两种解决办法,先分述如下. 1.利用NSDiction ...

  7. ios 判断用户是否开启权限---并跳转设置

    ios 判断用户是否开启权限---并跳转设置 ios 判断用户是否开启权限---并跳转“系统设置” 1.判断 访问相册 或 相机 权限是否开启 2.检测是否开启定位 后面将持续更新 只有在应用请求过位 ...

  8. java中判断list是否为空的用法

    1.如果想判断list是否为空,可以这么判断: if(null == list || list.size() ==0 ){ //为空的情况 }else{ //不为空的情况 } 2.list.isEmp ...

  9. JS心得——判断一个对象是否为空

    判断一个对象是否为空对象,本文给出三种判断方法: 最常见的思路,for...in...遍历属性,为真则为"非空数组":否则为"空数组" 2.通过JSON自带的. ...

随机推荐

  1. 如何在 Linux 上复制文件/文件夹到远程系统?

    从一个服务器复制文件到另一个服务器,或者从本地到远程复制是 Linux 管理员的日常任务之一. 我觉得不会有人不同意,因为无论在哪里这都是你的日常操作之一.有很多办法都能处理这个任务,我们试着加以概括 ...

  2. “吃人”的那些Java名词:对象、引用、堆、栈

    记得中学的课本上,有一篇名为<狂人日记>课文:那时候根本理解不了鲁迅写这篇文章要表达的中心思想,只觉得满篇的“吃人”令人心情压抑:老师在讲台上慷慨激昂的讲,大多数的同学同我一样,在课本面前 ...

  3. 【从零开始自制CPU之学习篇03】锁存器与触发器

    本篇学习了两种锁存器:SR Latch和D Latch,一种触发器:D flip flop SR Latch:SR—锁存器 初始状态下,S和R都为0,Q和Q‘随机有一个为1另一个 为0(取决于电流速度 ...

  4. XML就是这么简单

    什么是XML? XML:extensiable markup language 被称作可扩展标记语言 XML简单的历史介绍: gml->sgml->html->xml gml(通用标 ...

  5. [十六]JavaIO之InputStreamReader 与 OutputStreamWriter

      简介 InputStreamReader OutputStreamWriter是转换流 InputStreamReader 是字节流通向字符流的桥梁,它将字节流转换为字符流. OutputStre ...

  6. 微信公众号通过图片选取接口上传到阿里oss

    前言 之前写过一篇微信JS-SDK的使用方法,可进行参考 https://www.cnblogs.com/fozero/p/10256862.html 配置并调用公众号接口权限 1.配置权限微信公众号 ...

  7. JS的forEach和map方法的区别

    一.前言 forEach()和map()两个方法都是ECMA5中Array引进的新方法,主要作用是对数组的每个元素执行一次提供的函数,但是它们之间还是有区别的.jQuery也有一个方法$.each() ...

  8. Linux基础命令第三天

    1,vim编辑器 命令模式下: pageup 往上翻页 pagedown 往下翻页 H 光标移动到屏幕首行 gg 光标动荡到文档的首行,如果前面加上n,表示移动到n行 G 移动文档最后一行 /name ...

  9. CentOS 7下用firewall-cmd

    一 .控制端口/服务 可以通过两种方式控制端口的开放,一种是指定端口号另一种是指定服务名.虽然开放http服务就是开放了80端口,但是还是不能通过端口号来关闭,也就是说通过指定服务名开放的就要通过指定 ...

  10. 谈谈Mysql主从同步延迟分析及解决方案

    一.MySQL的数据库主从复制原理 MySQL主从复制实际上基于二进制日志,原理可以用一张图来表示: 分为四步走: 1. 主库对所有DDL和DML产生的日志写进binlog: 2. 主库生成一个 lo ...