吧Category使用场景:
-类包含了很多个方法的实现,而这些方法需要不同的团队成员来实现。
-当你在使用基础类库中的类时,不想集成这些类,只想添加一些方法时。
-Category能访问原始类的实例变量,但是不能添加实例变量,如果想添加实例变量,那么就要通过创建继承子类来实现。
-Category实现文件中的实例方法,只要你不去调用它,它就不需要实现所有声明中的所有方法。
block :
代码块存储的数据是一个函数体 ,"^"脱字符,是代码块的语法标记,
代码块中使用局部变量,必须要在局部变量中添加关键字_block;
KVO:基于键值的观察者,主要用于视图交互方面,比如界面的某些数据发生变化了,界面也要跟着变化,KVO实现两个对象的直接同步(model,view)。只有通过键值编码改变的值(KVO),才会调用观察者注册的方法。
NSDictionary:不可变的词典
[NSDictionary dictionaryWithObjectsAndKeys:..] : 使用键值对直接创建词典对象,结尾必需使用nil标志结束。
example: NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"",@"",nil];
[dictionary count]: 得到词典的键值对数量。
[dictionary keyEnumerator]: 将词典的所有key储存在NSEnumerator中.
example:
NSEnumerator *enumeratorKey = [dictionary keyEnumerator];
for (NSObject *object in enumeratorObject) {
NSLog(@"value:%@", object);
}
[dictionary objectEnumerator]: 将词典的所有value储存在NSEnumerator中
[dictionary objectForKey:key]: 通过传入key对象可以拿到当前key对应储存的值
NSMutableDictionary:可变词典。
NSMutableDictionary 是NSDictionay的子类,所以继承了NSDictionay的方法。
[dictionary setObject: forKey:] :向可变的词典动态的添加数据 。
[dictionary removeAllObjects..] : 删除掉词典中的所有数据。
[dictionary removeObjectForKey..] :删除掉词典中指定key的数据。
NSArray:不可变的数组
[array count] : 数组的长度
[array objectAtIndex 0]: 传入数组脚标的id 得到数据对象。
NSArray *array = [NSArray arrayWithObjects:@"",@"",nil]; 创建数组对象并初始化赋值。
NSMutaleArray:可变的对象数组
[NSMutableArray arrayWithCapacity:3] :初始化可变数组对象的长度。
[array addObject:] : 向可变数组尾部添加数据对象。
[array addObjectsFromArray:] :向可变数组尾部添加一个数组对象。
[muArray insertObject:@"" atIndex:]; 向可变数组的指定位置添加对象。
for (NSObject * object in muArray) {
NSLog(@"数组对象:%@", object);
}
NSRange range = NSMakeRange(0,6); 设置一个范围为 0 到 6 之间。
[array removeObject:obj inRange:range] : 设置在一个范围内删除数据,如果这个范围内没有删除的这个对象则不会删除任何东西。例子中因为obj对象在 数组 0 到 6的范围内,所以obj就被删除掉了。
[muArray replaceObjectAtIndex: withObject:@""]; 替换某索引值对应的对象。
isKindeOfClass,isMemberOfClass,id 动态数据类型:
对象在运行时获取其类型的能力,成为内省,内省有很多种方法实现:
判断对象类型:
-(BOOL) isKindOfClass: classObj判断是否是这个类或者这个类的子类的实例。
-(BOOL) isMemberOfClass: classObj 判断是否是这个类的实例,和父类没有关系。
[string1 hasPrefix:@"aaa"]匹配以“aaa”开头的字符串。
[string2 hasSuffix:@"bbb"]匹配以“bbb”结尾的字符串。
[string stringByReplacingCharactersInRange:rang withString:@"大产"];将搜索出来的字符串替换成指定字符串。
[string stringByReplacingOccurrencesOfString :@" " withString:@"*"]; 将所有为“ ”的字符串全部替换为“*”
NSInteger integerNumber = 11;
NSString * string = [NSString stringWithFormat:@"%d",integerNumber];将NSInteger转换成NSString。
NSInteger integer = [string intValue]; 将NSString转化成NSInteger.