判断系统的版本代码:
//系统版本大于~~
#define SYSTEM_VERSION_GREATER_THAN_TO(v) ([[[UIDevice currentDevice]systemVersion]compare:v options:NSNumericSearch]!=NSOrderedAscending)
//系统版本小于~~
#define SYSTEM_VERSIOM_LESS_THAN(v) ([[[UIDevice currentDevice]systemVersion]compare:v options:NSNumericSearch]==NSOrderedAscending)
//在6.0到6.1版本内才会执行
if ((SYSTEM_VERSION_GREATER_THAN_TO(@"8.0"))&&(SYSTEM_VERSIOM_LESS_THAN(@"8.1")))
{
//执行
}
枚举
上文中 NSOrderedAscending 是枚举类型 为-1,相关如下
typedef NS_ENUM(NSInteger, NSComparisonResult) {NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};
在某些版本中替换掉系统的方法
//要替换系统方法的类 UIImagePickerController
//shouldAutorotate 要替换的方法
Method oldMethod1=class_getInstanceMethod([UIImagePickerController class], @selector(shouldAutorotate));
//新写的方法
Method newMethod1=class_getInstanceMethod([ImagePickerReplaceMethodsHolder class], @selector(shouldAutorotate));
//执行替换
method_setImplementation(oldMethod1, method_getImplementation(newMethod1));
Method oldMethod2=class_getInstanceMethod([UIImagePickerController class], @selector(preferredInterfaceOrientationForPresentation));
Method newMethod2=class_getInstanceMethod([ImagePickerReplaceMethodsHolder class], @selector(preferredInterfaceOrientationForPresentation));
method_setImplementation(oldMethod2, method_getImplementation(newMethod2));
交换两个类方法
method_exchangeImplementations(m1, m2);
//交换两个方法的实现时候使用
替换类中的方法
class_replaceMethod替换类方法
1.当类中没有想替换的原方法的时候,该方法会调用class_addMethod来为该类增加一个新方法
2.当需要替换的方法可能不存在的时候,可以考虑该方法
OC中大写自动分割代码
//a 97 大 A65
NSString * string=@"MyNameIsYinYuGuang";
NSRegularExpression * regexp=[NSRegularExpression regularExpressionWithPattern:@"([a-z])([A-Z])" options:0 error:NULL];
NSString * newString=[regexp stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, string.length) withTemplate:@"$1 $2"];
NSLog(@"Changed '%@'->'%@'",string,newString);
我是demo
QQ交流群 298975638