iOS之第三方库

2016-01-04  本文已影响512人  PanPan1127

iOS之第三方库

AFNetworking

思路

NSURLConnection + NSOperation

GCD

序列化&验证

改进

概念

CocoaPods

概念

安装-略

FMDB

解决高并发,以及多线程问题:

_queue = dispatch_queue_create([[NSString stringWithFormat:@"fmdb.%@", self] UTF8String], NULL);
dispatch_queue_set_specific(_queue, kDispatchQueueSpecificKey, (__bridge void *)self, NULL);

* 使用时获取 databasequeue,并做判断。是否是当前的 databasequeue(一般用类方法创建,单例性质)。

    ```
FMDatabaseQueue *currentSyncQueue = (__bridge id)dispatch_get_specific(kDispatchQueueSpecificKey);

    assert(currentSyncQueue != self && "inDatabase: was called reentrantly on the same queue, which would lead to a deadlock"); 

jsonmodel

核心就是用class_copyPropertyList得到类的属性列表,在遍历列表,用property_getAttributes得到每个属性的类型,最后用kvc,接可以得到所有的值。

NJKWebViewProgress

进度条:根据总的请求数目和 js 的 readstate 方法共同判定。

TMCache

dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);

[self objectForKey:key block:^(TMCache *cache, NSString *key, id object) {
    objectForKey = object;
    dispatch_semaphore_signal(semaphore);
}];

dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);

```

UIActionSheet+Blocks

利用objc_getAssociatedObjectobjc_setAssociatedObject来 copy block,实现 delegate 中操作的执行。

WebViewJavascriptBridge

概念:

首先有两个问题:

明确上述两个问题,webpage中的js method和webview本地的method之间关系。那WebViewJavascriptBridge出现是否解决这个问题(这个问题就是让js可以直接调用native的method)呢?答案是否定的,没有。

解决方式:本质还是用uiwebview的代理方法进行字段拦截(判断url的scheme),实现js间接调用native的method。

原理:

上一篇 下一篇

猜你喜欢

热点阅读