<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jacknathan的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jacknathan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jacknathan]]></copyright><item><title><![CDATA[cocoapods安装pod setup error解决方法]]></title><link>https://blog.youkuaiyun.com/jacknathan/article/details/53638608</link><guid>https://blog.youkuaiyun.com/jacknathan/article/details/53638608</guid><author>jacknathan</author><pubDate>Wed, 14 Dec 2016 14:09:33 +0800</pubDate><description><![CDATA[重装了电脑系统，cocoapods安装过程中总会遇到各种问题，最常碰到的是pod setup 失败 
终端提示 
[!] /usr/bin/git clone https://github.com/CocoaPods/Specs.git master 
Cloning into ‘master’… 
error: RPC failed; curl 18 transfer closed with ou]]></description><category></category></item><item><title><![CDATA[类的Load和initialize方法]]></title><link>https://blog.youkuaiyun.com/jacknathan/article/details/52840925</link><guid>https://blog.youkuaiyun.com/jacknathan/article/details/52840925</guid><author>jacknathan</author><pubDate>Mon, 17 Oct 2016 18:58:35 +0800</pubDate><description><![CDATA[load： 
load方法在类加载进运行时系统（runtime）时会调用，在main函数之前，不管你有没有用到这个类
调用顺序：先执行父类load方法，然后执行子类的load方法，load 方法不遵从继承规则，如果类本身没有实现load方法，那么系统就不会调用，不管父类有没有实现load方法是线程安全的 
load 方法中最常用的就是方法交换method swizzling
initialize]]></description><category></category></item><item><title><![CDATA[xcode删除本地git代码管理]]></title><link>https://blog.youkuaiyun.com/jacknathan/article/details/52690974</link><guid>https://blog.youkuaiyun.com/jacknathan/article/details/52690974</guid><author>jacknathan</author><pubDate>Wed, 28 Sep 2016 15:38:38 +0800</pubDate><description><![CDATA[创建工程时如果勾选了create local git，或者svn checkout出来的工程带git代码管理功能，如何删除呢？ 
将工程退出，打开终端，执行下面语句：cd 工程路径（直接将工程文件拖拽至此）find . -type d -name “.git”|xargs rm -rf这时候再打开工程文件，之前的”M”标志消失，则表明操作成功！]]></description><category></category></item><item><title><![CDATA[__block和__weak修饰符的区别]]></title><link>https://blog.youkuaiyun.com/jacknathan/article/details/52680943</link><guid>https://blog.youkuaiyun.com/jacknathan/article/details/52680943</guid><author>jacknathan</author><pubDate>Tue, 27 Sep 2016 15:15:35 +0800</pubDate><description><![CDATA[__weak与__block修饰符区别 
API Reference对__block变量修饰符的解释，大概意思：1.__block对象在block中是可以被修改、重新赋值的。  
2.__block对象在block中不会被block强引用一次，从而不会出现循环引用问题。API Reference对__weak变量修饰符的解释，大概意思：使用了__weak修饰符的对象，作用等同于定义为weak的pro]]></description><category></category></item><item><title><![CDATA[code_snippet 自定义代码块]]></title><link>https://blog.youkuaiyun.com/jacknathan/article/details/52101879</link><guid>https://blog.youkuaiyun.com/jacknathan/article/details/52101879</guid><author>jacknathan</author><pubDate>Wed, 03 Aug 2016 11:21:37 +0800</pubDate><description><![CDATA[平时有一些经常使用到的并且可复用的代码，可以用代码块的方式封装，这样能大大提高开发效率，至少能让你少些很多重复代码比如swift懒加载属性，Lazy var因为没有代码补全，所以写起来不方便，就用代码块的方式保存好，定义个快捷键(shortCut)，方便很多 
注意：name, type是用<#name#>, <#type#>做文本封装选中你要生成代码的代码，左键拖入代码块编辑区，生成自定义代码块]]></description><category></category></item><item><title><![CDATA[Reveal + 越狱真机查看第三方app的UI结构]]></title><link>https://blog.youkuaiyun.com/jacknathan/article/details/51601569</link><guid>https://blog.youkuaiyun.com/jacknathan/article/details/51601569</guid><author>jacknathan</author><pubDate>Tue, 07 Jun 2016 09:45:18 +0800</pubDate><description><![CDATA[偶尔不免有需要查看第三方app UI结构的时候，这篇文章讲得非常详细 
http://www.jianshu.com/p/4dc8f94ca27c]]></description><category></category></item><item><title><![CDATA[关于Runloop]]></title><link>https://blog.youkuaiyun.com/jacknathan/article/details/50931712</link><guid>https://blog.youkuaiyun.com/jacknathan/article/details/50931712</guid><author>jacknathan</author><pubDate>Sat, 19 Mar 2016 16:40:37 +0800</pubDate><description><![CDATA[想用比较通俗点方式解释下Runloop大致是什么东西，什么原理。一般来讲，一个线程一次只能执行一个任务，执行完成后线程就会退出。如果我们需要一个机制，让线程能随时处理事件但并不退出，runloop就是为了实现这种机制而存在。RunLoop 实际上就是一个对象，这个对象管理了其需要处理的事件和消息，并提供了一个入口函数（内部主要是一个do-while 循环），来实现接收消息-等待-处理的循环，直到这个]]></description><category></category></item><item><title><![CDATA[CATransform3D 透视的形变效果]]></title><link>https://blog.youkuaiyun.com/jacknathan/article/details/50828794</link><guid>https://blog.youkuaiyun.com/jacknathan/article/details/50828794</guid><author>jacknathan</author><pubDate>Tue, 08 Mar 2016 17:07:59 +0800</pubDate><description><![CDATA[翻转透视效果 
    CATransform3D trans = CATransform3DIdentity; 
    trans.m34 = 1.0/100; 
    trans = CATransform3DRotate(trans, 15.0f * M_PI/180.0f, 1, 0, 0); 
效果如下： 
transform的结构如下： 
struct CATransform3D]]></description><category></category></item><item><title><![CDATA[弹性动画方法animateWithDuration: delay: usingSpringWithDamping: initialSpringVelocity: options: animations]]></title><link>https://blog.youkuaiyun.com/jacknathan/article/details/47779815</link><guid>https://blog.youkuaiyun.com/jacknathan/article/details/47779815</guid><author>jacknathan</author><pubDate>Wed, 19 Aug 2015 14:06:54 +0800</pubDate><description><![CDATA[这个动画效果是从IOS7开始有的，个人觉得动画效果的用户体验很好，用起来也方便，但是这里面的dampingRatio和velocity涉及到物理力学的知识，比较难理解和计算，只能通过Demo试验来理解它所代表的意思。通过形象生动的比喻来理解它。附上原英文文档解释 
/* Performs animations using a timing curve described by the motion]]></description><category></category></item><item><title><![CDATA[关于进程和线程比较好的一个解释]]></title><link>https://blog.youkuaiyun.com/jacknathan/article/details/47373083</link><guid>https://blog.youkuaiyun.com/jacknathan/article/details/47373083</guid><author>jacknathan</author><pubDate>Sun, 09 Aug 2015 08:57:52 +0800</pubDate><description><![CDATA[进程和线程的区别，这是一个许多程序员面试会碰到的问题，本人非计算机专业出身，所以被问到这种基础问题的次数更多，也看过很多解释，下面这个算是比较不错的一个解释：进程（process），指的是一个正在运行中的可执行文件。每一个进程都拥有独立的虚拟内存空间和系统资源，包括端口权限等，且至少包含一个主线程和任意数量的辅助线程。另外，当一个进程的主线程退出时，这个进程就结束了。线程（thread），指的是一个]]></description><category></category></item><item><title><![CDATA[断点的使用技巧（未完待补充）]]></title><link>https://blog.youkuaiyun.com/jacknathan/article/details/47324589</link><guid>https://blog.youkuaiyun.com/jacknathan/article/details/47324589</guid><author>jacknathan</author><pubDate>Fri, 07 Aug 2015 20:58:12 +0800</pubDate><description><![CDATA[断点的使用技巧

在最初的时候不会用断点，碰到循环里特点条件断点或者特定条件下查看对象的状态属性时，我会傻傻的的去写个if语句，然后重新运行，断点完了后运行，然后再把if和log代码删除，非常低效，其实断点是可以设置属性的。

断点有4个属性可以设置


Condition
Ignore
Option
Action





Conditon, 就是断点条件，输入条件表达式后，当符合条件时断点才会]]></description><category></category></item><item><title><![CDATA[RSA机密算法原理]]></title><link>https://blog.youkuaiyun.com/jacknathan/article/details/45824171</link><guid>https://blog.youkuaiyun.com/jacknathan/article/details/45824171</guid><author>jacknathan</author><pubDate>Mon, 18 May 2015 16:35:24 +0800</pubDate><description><![CDATA[http://blog.youkuaiyun.com/sunmenggmail/article/details/11994013]]></description><category></category></item><item><title><![CDATA[NSString类型copy和strong属性的区别]]></title><link>https://blog.youkuaiyun.com/jacknathan/article/details/45740261</link><guid>https://blog.youkuaiyun.com/jacknathan/article/details/45740261</guid><author>jacknathan</author><pubDate>Fri, 15 May 2015 09:18:33 +0800</pubDate><description><![CDATA[和一般类型的copy以及strong有所不同 
如果原字符是NSString类型，那么copy和strong的操作效果是一样的，都是对原字符串的引用计数+1，只是一次浅拷贝。 
如果原字符串是NSString的子类NSMutableString, 那么strong的效果还是和原来一样，对该字符串进行了一次浅拷贝（引用计数+1）, 而copy是则是进行了一次深拷贝，产生一个新的对象，而新对象的类型是N]]></description><category></category></item><item><title><![CDATA[Objective-C消息机制]]></title><link>https://blog.youkuaiyun.com/jacknathan/article/details/44936931</link><guid>https://blog.youkuaiyun.com/jacknathan/article/details/44936931</guid><author>jacknathan</author><pubDate>Wed, 08 Apr 2015 10:01:35 +0800</pubDate><description><![CDATA[ios开发，objective-c消息发送机制原理]]></description><category></category></item><item><title><![CDATA[objective-c Block实质]]></title><link>https://blog.youkuaiyun.com/jacknathan/article/details/44833887</link><guid>https://blog.youkuaiyun.com/jacknathan/article/details/44833887</guid><author>jacknathan</author><pubDate>Thu, 02 Apr 2015 16:27:55 +0800</pubDate><description><![CDATA[一. Block本质 
用一句话描述就是Block是带有自动变量值的匿名函数，举一个简单的例子 
void(^blk)(void) = { printf(“Block\n”)}; 
blk(); 
系统底层是这样实现的 
1. 创建一个结构体（命名为main_block_imp）; 
    struct main_Block_imp{ 
        void *FunctPtr;     //]]></description><category></category></item><item><title><![CDATA[touchesBegan: withEvent:触摸事件传递顺序]]></title><link>https://blog.youkuaiyun.com/jacknathan/article/details/44563453</link><guid>https://blog.youkuaiyun.com/jacknathan/article/details/44563453</guid><author>jacknathan</author><pubDate>Mon, 23 Mar 2015 14:07:07 +0800</pubDate><description><![CDATA[(void)touchesBegan:(NSSet )touches withEvent:(UIEvent )event;
(void)touchesMoved:(NSSet )touches withEvent:(UIEvent )event;
(void)touchesEnded:(NSSet )touches withEvent:(UIEvent )event;
(void)touchesCa]]></description><category></category></item></channel></rss>