最近发现了不少APPLE自带的方法,看了简直想撞墙啊,居然这么简单。当初不造的时候,费了好大劲啊,现在却如此简单的解决了。
汉字转阿拉伯文 韩文 希伯来 泰文 拉丁文 拼音
CFMutableStringRef string = CFStringCreateMutableCopy(NULL, 0, CFSTR("试一试"));
NSLog(@"%@",string);
CFStringTransform(string, NULL, kCFStringTransformToLatin, false);
NSLog(@"%@",string);
CFStringTransform(string, NULL, kCFStringTransformStripCombiningMarks, false);
NSLog(@"%@",string);
去重音符号
CFStringTransform(string, NULL, kCFStringTransformStripCombiningMarks, false);
NSData 与 Base64 互相转换
NSData *data = [NSData alloc];
[data initWithBase64EncodedString: options:];
[data base64EncodedStringWithOptions:];
解码百分号编码的字符串
NSString *str = @"str";
[str stringByRemovingPercentEncoding];
[str stringByAddingPercentEncodingWithAllowedCharacters:];
数组首位取值
NSArray *Array = [[NSArray alloc] init];
[Array firstObject];
[Array lastObject];
终于等到了这个方法,那么这个方法跟
[Array objectAtIndex:0];
的区别在哪? 区别就是,当数组为空的时候,后面这个方法会让程序crash,而firstobject则会返回nil,让我们的程序可以安全很多。
弱引用容器
常见的Cocoa容器有NSArray、NSSet和 NSDictionary,大部分场景来说,足够用了,但是在某些情况下并不适用。NSArray和NSSet会保留保存其中的对象,NSDictionary不光保留值,还要复制键。但是从IOS6开始有了新的容器类:NSPointerArray、NSHashTable 和 NSMapTable,在苹果文档中统称为指针容器类 (pointer collection class),有时候配置为使用NSPointerFunctions类。
NSPointerArray类似于NSArray,NSHashTable 类似于NSSet, NSMapTable 类似于NSDictionary。这些新容器都可以配置为持有弱引用,非对象的指针或者其他罕见情形。NSPointerArray还有一个好处就是可以存储NULL值,这个问题在NSArray里面经常存在。
这些类兼容ARC弱引用。
NSCache
使用弱引用容器最常见的理由是实现缓存,但很多时候还是可以用Foundation的缓存对象NSCache代替。用法跟NSDictionary一样,可以调用objectForKey:、setObject: forKey: 和 removeObjectForKey:。
但是,事实上NSCache的一些特性还是被低估了,比如其多线程安全性。开发者可以在任何线程上不加锁的修改NSCache。NSCache 还被设计为能与符合<NSDiscardableContent>协议的对象整合。<NSDiscardableContent>最常见的类型是NSPurgeableData。通过调用beginContentAccess 和 endContentAccess,开发者能控制何时丢弃对象时安全的,这不仅能在应用运行的时候提供自动缓存管理,甚至在应用暂停时也有用。通常在内存吃紧且内存警告没有释放足够内存的情况下,IOS开始杀掉暂停的后台应用,这时应用不会受到委托消息,会被杀掉。但如果用了NSPurgeableData,IOS会替你释放内存,即使应用处于暂停状态。
NSURLComponents
NSString *url = @"http://www.baidu.com/wiki/Special:Search?search=ios";
NSURLComponents *components = [NSURLComponents componentsWithString:url];
NSString *host = components.host;
NSLog(@"%@",host);
components.host = @"www.sina.com";
NSURL *esURL = [components URL];
NSLog(@"%@",esURL);
此外NSURL.h 添加了一些有用的分类来处理URL。可以用[NSCharacterSetURLPathAllowedCharacterSet]得到允许在路径中出现的字符集合。还有[NSString stringByAddingPercentEncodingWithAllowedCharacters:],允许开发者控制使用百分号编码的字符。
要说明的一点是,以上这些方法,类大部分是IOS7以上才可以支持,在IOS6中使用的话,请注意可能出现的问题。