<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[HookyStudent的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/HookyStudent</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; HookyStudent]]></copyright><item><title><![CDATA[GCD 学习（八）dispatch_semaphore]]></title><link>https://blog.csdn.net/HookyStudent/article/details/44856279</link><guid>https://blog.csdn.net/HookyStudent/article/details/44856279</guid><author>HookyStudent</author><pubDate>Fri, 03 Apr 2015 15:53:41 +0800</pubDate><description><![CDATA[dispatch_semaphore 信号量基于计数器的一种多线程同步机制。在多个线程访问共有资源时候，会因为多线程的特性而引发数据出错的问题。
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
    dispatch_semaphore_t semaphore = dispatch_semaphore_create(1);
 ]]></description><category></category></item><item><title><![CDATA[GCD学习(七) dispatch_apply]]></title><link>https://blog.csdn.net/HookyStudent/article/details/44856265</link><guid>https://blog.csdn.net/HookyStudent/article/details/44856265</guid><author>HookyStudent</author><pubDate>Fri, 03 Apr 2015 15:52:08 +0800</pubDate><description><![CDATA[dispathc_apply 是dispatch_sync 和dispatch_group的关联API.它以指定的次数将指定的Block加入到指定的队列中。并等待队列中操作全部完成.
NSArray *array = [NSArray arrayWithObjects:@"/Users/chentao/Desktop/copy_res/gelato.ds",
                  ]]></description><category></category></item><item><title><![CDATA[GCD学习(六) dispatch_async 和dispatch_sync]]></title><link>https://blog.csdn.net/HookyStudent/article/details/44856229</link><guid>https://blog.csdn.net/HookyStudent/article/details/44856229</guid><author>HookyStudent</author><pubDate>Fri, 03 Apr 2015 15:51:11 +0800</pubDate><description><![CDATA[dispatch_sync(),同步添加操作。他是等待添加进队列里面的操作完成之后再继续执行。
dispatch_queue_t concurrentQueue = dispatch_queue_create("my.concurrent.queue", DISPATCH_QUEUE_CONCURRENT);
    NSLog(@"1");
    dispatch_sync(concurre]]></description><category></category></item><item><title><![CDATA[GCD学习(五) dispatch_barrier_async]]></title><link>https://blog.csdn.net/HookyStudent/article/details/44856167</link><guid>https://blog.csdn.net/HookyStudent/article/details/44856167</guid><author>HookyStudent</author><pubDate>Fri, 03 Apr 2015 15:47:07 +0800</pubDate><description><![CDATA[先看段代码

dispatch_queue_t concurrentQueue = dispatch_queue_create("my.concurrent.queue", DISPATCH_QUEUE_CONCURRENT);
    dispatch_async(concurrentQueue, ^(){
        NSLog(@"dispatch-1");
    });
    ]]></description><category></category></item><item><title><![CDATA[GCD 学习(四) dispatch_group]]></title><link>https://blog.csdn.net/HookyStudent/article/details/44856159</link><guid>https://blog.csdn.net/HookyStudent/article/details/44856159</guid><author>HookyStudent</author><pubDate>Fri, 03 Apr 2015 15:45:37 +0800</pubDate><description><![CDATA[如果想在dispatch_queue中所有的任务执行完成后在做某种操作，在串行队列中，可以把该操作放到最后一个任务执行完成后继续，但是在并行队列中怎么做呢。这就有dispatch_group 成组操作。比如
dispatch_queue_t dispatchQueue = dispatch_queue_create("ted.queue.next", DISPATCH_QUEUE_CONCURR]]></description><category></category></item><item><title><![CDATA[GCD 学习（三）Main&Global Dispatch Queue]]></title><link>https://blog.csdn.net/HookyStudent/article/details/44856139</link><guid>https://blog.csdn.net/HookyStudent/article/details/44856139</guid><author>HookyStudent</author><pubDate>Fri, 03 Apr 2015 15:43:47 +0800</pubDate><description><![CDATA[Main Dispatch Queue是在主线程中执行任务的Dispatch Queue。因为主线程只有1个，所以Main Dispatch Queue是Serial Dispatch Queue。追加到Main Dispatch Queue中的任务将在主线程的RunLoop中执行。因为是在主线程中执行，所以应该只将用户界面更新等一些必须在主线程中执行的任务追加到Main
 Dispatch Q]]></description><category></category></item><item><title><![CDATA[GCD 学习（二）dispatch_queue_create创建Dispatch Queue]]></title><link>https://blog.csdn.net/HookyStudent/article/details/44856109</link><guid>https://blog.csdn.net/HookyStudent/article/details/44856109</guid><author>HookyStudent</author><pubDate>Fri, 03 Apr 2015 15:42:00 +0800</pubDate><description><![CDATA[dispatch_queue_create 用于创建用户线程队列。可以创建Serial/Concurrent Dispatch Queue 两种队列，即串行与并行队列。

1. 创建Serial Dispatch Queue。

dispatch_queue_t serialQueue =
  dispatch_queue_create(“com.SerialQueue”, NULL);可]]></description><category></category></item><item><title><![CDATA[GCD 学习（一）简介]]></title><link>https://blog.csdn.net/HookyStudent/article/details/44856063</link><guid>https://blog.csdn.net/HookyStudent/article/details/44856063</guid><author>HookyStudent</author><pubDate>Fri, 03 Apr 2015 15:39:07 +0800</pubDate><description><![CDATA[GCD（Grand Central Dispatch）是从OS X Snow Leopard和iOS 4开始引入的新一代的多线程编程技术。开发者只需定义想执行的任务并追加到适当的Dispatch Queue中，GCD就能生成必要的线程并有计划的执行任务。并且由于线程管理是作为系统的一部分来实现的，因此系统可以统一管理，它会决定什么时候创建新线程，创建哪些新线程，多个任务是顺序执行还是并发执行。这样]]></description><category></category></item><item><title><![CDATA[iOS中打印日志显示系统详细时间，类名，行号，函数名，线程，及打印值]]></title><link>https://blog.csdn.net/HookyStudent/article/details/42964317</link><guid>https://blog.csdn.net/HookyStudent/article/details/42964317</guid><author>HookyStudent</author><pubDate>Wed, 21 Jan 2015 10:06:23 +0800</pubDate><description><![CDATA[Q：如何打印当前的函数和行号？
A：我们可以在打印时使用一些预编译宏作为打印参数，来打印当前的函数和行号。如：
NSLog(@"%s:%d obj=%@", __func__, __LINE__, obj);

其中__func__和__LINE__都是预编译的宏，编译时会分别替换为当前函数和当前行号。
下面是一些常用于打印日志的宏。
宏    说明
__func__    打印当前函]]></description><category></category></item><item><title><![CDATA[Xcode代码中特殊的注释技术——TODO、FIXME和XXX的用法]]></title><link>https://blog.csdn.net/HookyStudent/article/details/41517779</link><guid>https://blog.csdn.net/HookyStudent/article/details/41517779</guid><author>HookyStudent</author><pubDate>Wed, 26 Nov 2014 16:22:46 +0800</pubDate><description><![CDATA[TODO: + 说明：

如果代码中有该标识，说明在标识处有功能代码待编写，待实现的功能在说明中会简略说明。







FIXME: + 说明：

如果代码中有该标识，说明标识处代码需要修正，甚至代码是错误的，不能工作，需要修复，如何修正会在说明中简略说明。







XXX: + 说明：

如果代码中有该标识，说明标识处代码虽然实现了功能，但是]]></description><category></category></item><item><title><![CDATA[处理从服务返回的NSDictionary值为NSNull或者<null>问题]]></title><link>https://blog.csdn.net/HookyStudent/article/details/41517435</link><guid>https://blog.csdn.net/HookyStudent/article/details/41517435</guid><author>HookyStudent</author><pubDate>Wed, 26 Nov 2014 16:18:22 +0800</pubDate><description><![CDATA[在APP开发过程中，我们有时候要从服务器加载数据时，一般是都是用json或者xml解析后用NSDictionary保存，但是从服务器加载过来的数据直接使用时会崩溃，是因为在NSDictionary中的某个值为或者NSnull ，但是我们用一般的检查根本检查不出来，如 if( [obc objectForKey:key]==nil) 没有效果，这时候就要对NSDictionary的中值做处理了，把N]]></description><category></category></item><item><title><![CDATA[UIAlertView和UIActionSheet的IOS8兼容]]></title><link>https://blog.csdn.net/HookyStudent/article/details/40986047</link><guid>https://blog.csdn.net/HookyStudent/article/details/40986047</guid><author>HookyStudent</author><pubDate>Mon, 10 Nov 2014 20:27:29 +0800</pubDate><description><![CDATA[IOS8中，UIActiconSheet已被废弃，同时基于UIActionSheet自定义的也将无效果。

Apple将UIActionSheet和UIAlertView整合成一个接口UIAlertController。

原来的是一个view，展示在window视图之上。现在改成了controller，展示方式变成由当前的controller直接present出来。]]></description><category></category></item><item><title><![CDATA[如何才能跟 App Store 审核团队有效沟通？]]></title><link>https://blog.csdn.net/HookyStudent/article/details/40340585</link><guid>https://blog.csdn.net/HookyStudent/article/details/40340585</guid><author>HookyStudent</author><pubDate>Tue, 21 Oct 2014 10:14:09 +0800</pubDate><description><![CDATA[AppReview@apple.com
-应用在提交后（处于“审核中”），应用和应用内购的状态
-状态更新通知——与开发者遭拒和影响审核时间相关的信息
-应用遭拒通知咨询-快速审核请求
------------------------------------
iTSPayments@apple.com
- 支付状态查询
- 与苹果向开发者支付费用相关的问题
- 咨询财务报表
--]]></description><category></category></item></channel></rss>