9.字典
NSMutableDictionary: NSDictionary
initWithObjectsAndKeys:
// 字典中的成员称为键值对, @"One"和@"1"组成一个键值对, @"One"称为值(Value), @"1"称为键(Key);
// 键和值都是任意对象, 不过, 键往往使用字符串, 字典里装的只是键和值的地址, 值可以重复, 但是键不能重复, 为同一个key设置value时, 将会替换掉原始的value
// 字典中的键值对没有顺序, 没有第一个第二个之说, 和数组不一样, 结构上也是链表
ObjectForKey // 可以迅速通过key来找到一个值(value)
count // 键值对的个数
枚举法遍历有两种, 通过键枚举遍历(keyEnumerator), 通过值枚举遍历[objectEnumerator], 快速枚举法, 遍历到的是键,
setObject: forKey:
removeObjectForKey
10.setter, getter, @property
在setter, getter中, 可以使用.运算符, 如果是赋值, 是使用set方法, 如果是使用私有变量, 是使用get方法
@property (readonly) // 表示只创建get方法, 不创建set方法, 没有write only
(atomic) // 原子操作, 有这个参数时, 在这个线程运行结束之前, 不允许其他线程使用我已用的资源, 正常情况下, 线程是可以使用同一个资源, 并且多个线程间可以交替的运行
(nonatomic) // 不必原子操作, 默认是原子操作的, 因此有时会加这个参数
@property (getter = OtherName) int name; // 修改默认的getter名字name为OtherName, 使用的时候可以同时使用这两个名字
@property (setter = setOther:) // setter后面必须有冒号;
(assign) 和 (readwrite) 都是默认的属性, 不需要写, 有时写上assign, 表示其他属性都不需要, 而不是忘记写了其他属性
// 如:@property NSString * name; 这时会有错误, 写成@property (assign) NSString * name; 就没有错误了
// 多个属性之间, 使用逗号隔开
(copy) (retain) // 这样声明对象的时候, 要在dealloc中加入release.
// NSString使用copy, 其他的对象都用retain, 基本数据类型都是默认的assign
|
|