一.1.import和include的区别
为了防止头文件的重复包含,include引入头文件如果不加预处理语句,将不具有防止重复包含的功能
2.import和@class的区别
@class不引入文件,只是做一个说明,声明@class后面的内容是一个类
3.Foundation/Foundation.h是神马东西
1)头文件
2)头文件的位置
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h
3)文件包含了其它的大量的头文件
作用:把Foundation.h引入了,等于把OC的库文件都引过来了
二.关于函数指针
函数指针是指向函数名的指针类型,
例如:
typedef 返回值类型 (*PFUN) (类型名*, 类型名*);
函数1
返回值类型(PFUN) 函数名(参数1类型* 参数1名, 参数2类型* 参数2名 ){
函数体;
函数体;
return 返回值类型的值;
}
函数2
返回值类型 函数名(参数1类型* 参数1名){
函数体;
根据参数判断返回函数1类型的哪个函数
函数体;
return (同函数1函数类型);
}
函数3
返回值类型 函数名(参数1类型* 参数1名, 参数2类型* 参数2名, PFUN p){
函数体;
p = 函数2(参数3);
函数体;
return 同返回值类型的值;
}
先执行函数3,当执行p = 函数2(参数)时,函数2会返回函数1类型的一个函数指针,( 即函数指针p实际上是存放一个指向函数1的地址),然后执行函数1
动态排序实质上就是函数3回调函数1,只是调用函数1的条件被封装成函数,而函数二决定了用哪个条件(函数1).
三.关于OC中字符串替换的疑问
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement options:(NSStringCompareOptions)options range:(NSRange)searchRange NS_AVAILABLE(10_5, 2_0);
options: 2 逐字精确匹配
4 从元字符串的尾部开始匹配
8 从元字符串的特定位置开始匹配,如从最后开始
64 只在数字内查找特定的字符串 10.2版本开始引入该规则
128 会忽略标注字符的匹配方式
256 会忽略宽度差异的匹配方式
512 如果要求返回值的话,匹配增强,如’aaa’ == ‘AAA’ 但排序时, 'aaa' > 'AAA'
1024