ParseSourceCodeStudy icon indicating copy to clipboard operation
ParseSourceCodeStudy copied to clipboard

Facebook开源的Parse源码分析【系列】

Results 17 ParseSourceCodeStudy issues
Sort by recently updated
recently updated
newest added

在void dispatch_async_limit(dispatch_queue_t queue,NSUInteger limitSemaphoreCount, dispatch_block_t block) 这个方法里,如果将limitSemaphoreCount改为大于1,是否程序就可能崩溃?要是只能置为1,是否就跟同步队列来做是一样的(比如在运行效率),如果不一样,那各有什么优缺点呢!

由于没有设置路径的话,默认cache会自定清除缓存,假设第二次发起情况的时候,服务端返回的是304,但是此时本地对应的request的cache被清除,那么 通过 NSCachedURLResponse *cacheResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request];取的NSCachedURLResponse不是就是为nil了吗,那这样的情况该怎么处理

由于不指定路径的话,cache默认是自动清除缓存的,那么第二次发起请求的时候,服务端返回数据没有更新,返回的是304,那么通过 NSCachedURLResponse *cacheResponse = [[NSURLCache sharedURLCache]cachedResponseForRequest:request];去取NSCachedURLResponse,不应该是为nil吗,这样的情况,怎么处理

下一篇什么时候更新啊

思考下NSLog的打印顺序为什么会是这样?答:dispatch_suspend的作用! 这个Log和打印顺序和suspend没有任何关系。和async有关。

- (void)viewDidLoad { [super viewDidLoad]; //因为用到了dispatch_barrier_async,该函数只能搭配自定义并行队列dispatch_queue_t使用。所以不能使用:dispatch_get_global_queue dispatch_queue_t queue = dispatch_queue_create("com.ioschengxuyuan.gcd.ForBarrier", DISPATCH_QUEUE_CONCURRENT); /* * *生成Dispatch Semaphore Dispatch Semaphore 的计数初始值设定为“1” (该初始值的1与下文中两个函数dispatch_semaphore_wait与dispatch_semaphore_signal进行的减1、加1里的1没有必然联系。 就算初始值是100,两个函数dispatch_semaphore_wait与dispatch_semaphore_signal还是会减“1”、加“1”)。 保证可访问 NSMutableArray 类对象的线程 同时只能有1个 * */ dispatch_semaphore_t semaphore = dispatch_semaphore_create(1)...

我测试的情况来看 [Demo_03_对DispatchQueue实现取消恢复操作_简单版] 中就算没有 dispatch_suspend 的暂停其实也会先于 dispatch_async 的 Log,这是为什么呢? ![screenshot](https://cloud.githubusercontent.com/assets/2088605/26489895/cbdf175e-423b-11e7-9b2b-a76c7d48bc74.jpg) 所以这个例子是不是有点不太恰当呢

``` NSURL *url = [NSURL URLWithString:@"http://ac-g3rossf7.clouddn.com/xc8hxXBbXexA8LpZEHbPQVB.jpg"]; // NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:15.0f]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:15.0f]; [request setHTTPMethod:@"POST"]; NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; NSURLSessionDataTask...

在第7篇讲述信号量的文章中说通过dispatch_once 来保证避免线程的竞争,哪里有竞争的地方啊,没有看到同时操作代码块的地方也没有读取同一块数据的地方,大神请解释一下