因为在NSArray和NSDictionary中nil中有特殊的含义(表示列表结束),所以不能在集合中放入nil值.如要确实需要存储一个表示“什么都没有”的值,可以使用NSNull类. NSNull只有一个方法: + (NSNull *) null; nil是一个对象指针为空,Nil是一个类指针为空,NULL是基本数据类型为空. 但是从数组取出NSNull对象不能和nil作比较,否则会出错,见这篇文章http://www.cocoachina.com/industry/20140424/8225…
本文由我们团队的 康祖彬 童鞋撰写,这是他的个人主页:https://kangzubin.cn. 理解"不存在"的概念不仅仅是一个哲学的问题,也是一个实际的问题.我们是有形宇宙的居民,而原因在于逻辑宇宙的存在不确定性.作为一个逻辑系统的物理体现,计算机面临一个棘手的问题,就是如何用"存在"表达"不存在".--摘自 NSHipster 这段话读起来怪怪的,毕竟是翻译过来的,大概意思是说在计算机中如何描述"不存在"这个概念很重要.…
类与对象的概念 类是对同一类事物高度的抽象,类中定义了这一类对象所应具有的静态属性(属性)和动态属性(方法). 对象是类的一个实例,是一个具体的事物. 类与对象是抽象与具体的关系. 类其实就是一种数据类型,它的变量就是对象. nil.Nil.NULL.NSNull的区别 nil:指向一个对象的空指针 Nil:指向一个类的空指针 NULL:指向其他类型(如:基本类型.C类型)的空指针 NSNull:通常表示集合中的空值 举例: NSURL *url = nil; Class class = Nil…
一. 字符串 API 1. NSString 用法简介 (1) NSString API 介绍 NSString 功能 : -- 创建字符串 : 使用 init 开头的实例方法, 也可以使用 String 开头的方法; // init 开头方法创建字符串 unichar data[5] = {97, 98, 99, 100, 101}; NSString * str = [[NSString alloc] initWithCharacters : data length : 5]; // str…
首先,回忆一下,访问对象属性一共有两种方法:点获取法和方括号获取法.而我们最常用的就是点获取法了.但是当我们遇到需要给对象动态添加属性和属性值时,点获取法好像就不太好用了,尤其是我们不知道属性名的时候更不好办.这时候,方括号获取法就派上用场了.下面,来看一个例子,就一目了然了. 代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> &l…
Foundation framework中用于收集cocoa对象(NSObject对象)的三种集合分别是: NSArray 用于对象有序集合(数组)NSSet 用于对象无序集合      (集合)NSDictionary用于键值映射(字典)以上三种集合类是不可变的(一旦初始化后,就不能改变) 以下是对应的三种可变集合类(这三种可变集合类是对应上面三种集合类的子类):NSMutableArrayNSMutableSet  可修改的集合.主要用于集合运算(并集,交集,差集)NSMutableDict…
用法总结:NSArray,NSSet,NSDictionary Foundation framework中用于收集cocoa对象(NSObject对象)的三种集合分别是: NSArray 用于对象有序集合(数组) NSSet 用于对象无序集合      (集合) NSDictionary用于键值映射(字典) 以上三种集合类是不可变的(一旦初始化后,就不能改变) 以下是对应的三种可变集合类(这三种可变集合类是对应上面三种集合类的子类): NSMutableArray NSMutableSet  可…
Foundation框架之NSArray.NSDictionary.NSSet及其Mutable类型 目录 概述——对Foundation框架集合类的理解 NSArray NSDictionary NSSet NSArray.NSDictionary和NSSet的Mutable类型 Foundation框架中集合类的使用详见苹果官方文档 集合类的实用操作 深层遍历 深层复制 待研究 概述——对Foundation框架集合类的理解 NSArray 创建 NSArray *array = [NSAr…
由于今天在NSDictionary初始化的时候出现Crash异常,故记录一下,避免下次再犯. 在Objective-C中,NSDictionary初始化的方法有很多种 方法1: [NSDictionary dictionaryWithObjectsAndKeys:<#(id), ...#>, nil] 方法2: NSDictionary *dic = @{@"key":value} 那么,坑在哪里呢?就在第二种初始化方法 NSDictionary *dic = @{@&qu…
因为父类指针可以指向子类对象,使用 copy 的目的是为了让本对象的属性不受外界影响,使用 copy 无论给我传入是一个可变对象还是不可对象,我本身持有的就是一个不可变的副本. 如果我们使用是 strong ,那么这个属性就有可能指向一个可变对象,如果这个可变对象在外部被修改了,那么会影响该属性. copy 此特质所表达的所属关系与 strong 类似.然而设置方法并不保留新值,而是将其“拷贝” (copy). 当属性类型为 NSString 时,经常用此特质来保护其封装性,因为传递给设置方法的…