<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zyx196的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/zyx196</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zyx196]]></copyright><item><title><![CDATA[Cocopods提交自己库及坑]]></title><link>https://blog.youkuaiyun.com/zyx196/article/details/77509746</link><guid>https://blog.youkuaiyun.com/zyx196/article/details/77509746</guid><author>zyx196</author><pubDate>Wed, 23 Aug 2017 18:59:09 +0800</pubDate><description><![CDATA[一、先安装Cocoapods这有一篇介绍如何安装POD二、注册Cocoapods账号1、注册：打开终端，输入 pod trunk register email  'nickname' --verbose例：pod trunk register zyx196@163.com ‘gyor zou’ –verbose这里nickname是必须的， 否则会报错 
2、打开Safary，到邮箱去点击激活链接]]></description><category></category></item><item><title><![CDATA[别说你会AFNetworking3.0/NSURLSession]]></title><link>https://blog.youkuaiyun.com/zyx196/article/details/73741031</link><guid>https://blog.youkuaiyun.com/zyx196/article/details/73741031</guid><author>zyx196</author><pubDate>Mon, 26 Jun 2017 16:07:47 +0800</pubDate><description><![CDATA[很多时候，AFNetworking都是目前iOS开发者网络库中的不二选择。Github上2W+的star数足见其流行程度。而从iOS7.0开始，苹果推出了新的网络库继承者NSURLSession后，AFNetworking也毫不犹豫地加入了对其的支持。3.0+更加只是提供了NSURLSession的支持。

  我们使用AFNetworking的时候，可能会有很多的朋友都会采用以下的写法：
]]></description><category></category></item><item><title><![CDATA[__attribute__的妙用整理]]></title><link>https://blog.youkuaiyun.com/zyx196/article/details/72471379</link><guid>https://blog.youkuaiyun.com/zyx196/article/details/72471379</guid><author>zyx196</author><pubDate>Thu, 18 May 2017 16:15:28 +0800</pubDate><description><![CDATA[1、如果想限制方法里必须调用用父类方法 

__attribute__((objc_requires_super))；
NS_REQUIRES_SUPER




2、如果想不可继承：

__attribute__((objc_subclassing_restricted))
@interface Eunuch : NSObject
@end
@interface Child ]]></description><category></category></item><item><title><![CDATA[64-bit Tips]]></title><link>https://blog.youkuaiyun.com/zyx196/article/details/72453391</link><guid>https://blog.youkuaiyun.com/zyx196/article/details/72453391</guid><author>zyx196</author><pubDate>Wed, 17 May 2017 21:54:36 +0800</pubDate><description><![CDATA[终究还是来了。Apple下发了支持64位的最后通牒：

As we announced in October, beginning February 1, 2015 new iOS apps submitted to the App Store must include 64-bit support and be built with the iOS 8 SDK. Beginning June]]></description><category></category></item><item><title><![CDATA[Cocoapods的使用]]></title><link>https://blog.youkuaiyun.com/zyx196/article/details/71533556</link><guid>https://blog.youkuaiyun.com/zyx196/article/details/71533556</guid><author>zyx196</author><pubDate>Wed, 10 May 2017 15:17:15 +0800</pubDate><description><![CDATA[1、查看ruby版本ruby -v2、如果需要更新，用rvm进行ruby更新#列出已知版本，会有提示
ruby list known 
#安装更新，例如 1.x.x版本
ruby inistall 1.x.x  3、更新gemgem update --system4、安装cocoapodssudo gem inistall cocoapods
pod setup下面就是日常pod使用了5、cd  项]]></description><category></category></item><item><title><![CDATA[JavaScript 小纪]]></title><link>https://blog.youkuaiyun.com/zyx196/article/details/70925875</link><guid>https://blog.youkuaiyun.com/zyx196/article/details/70925875</guid><author>zyx196</author><pubDate>Fri, 28 Apr 2017 17:58:42 +0800</pubDate><description><![CDATA[有如下代码段：var cls = function(){
    alert("sm message："+this);
    return "smthing";
}
var  obj   = new cls();
var  obj2  = cls();
结论：
1、alert两次，两次的this不同，一次是object，一次是window对象；var cls = function(){
    a]]></description><category></category></item><item><title><![CDATA[iOS UIScrollView滚动时导航栏背景渐变]]></title><link>https://blog.youkuaiyun.com/zyx196/article/details/53427521</link><guid>https://blog.youkuaiyun.com/zyx196/article/details/53427521</guid><author>zyx196</author><pubDate>Thu, 01 Dec 2016 22:19:42 +0800</pubDate><description><![CDATA[要实现这个功能需要达到： 
1. 监听UIScrollView的contentOffset.y值的变化； 
2. UINavigationBar半透明，ScrollView全屏； 
3. 动态设置UINavigationBar的背景图片； 
4. 隐藏导航栏下的那条黑线；下面我们进行各个击破：如何监听scrollView的滚动这里我们可以实现scrollView的delegate方法：-(void)]]></description><category></category></item><item><title><![CDATA[Swift里的内存管理：内存管理、weak和unowned]]></title><link>https://blog.youkuaiyun.com/zyx196/article/details/51649073</link><guid>https://blog.youkuaiyun.com/zyx196/article/details/51649073</guid><author>zyx196</author><pubDate>Sun, 12 Jun 2016 21:21:38 +0800</pubDate><description><![CDATA[因为 Playground 本身会持有所有声明在其中的东西，因此本节中的示例代码需要在 Xcode 项目环境中运行。在 Playground 中可能无法得到正确的结果。

不管在什么语言里，内存管理的内容都很重要，所以我打算花上比其他 tip 长一些的篇幅仔细地说说这块内容。

Swift 是自动管理内存的，这也就是说，我们不再需要操心内存的申请和分配。当我们通过初始化创建一个对象时，Sw]]></description><category></category></item><item><title><![CDATA[callee & caller的区别]]></title><link>https://blog.youkuaiyun.com/zyx196/article/details/51589105</link><guid>https://blog.youkuaiyun.com/zyx196/article/details/51589105</guid><author>zyx196</author><pubDate>Sun, 05 Jun 2016 13:19:06 +0800</pubDate><description><![CDATA[callee


callee是对象的一个属性，该属性是一个指针，指向参数arguments对象的函数
首先我们来写个阶成函数：





?





1

2

3

4

5

6

7




function

chen(x){

if

(x

return

1;

}
else{

re]]></description><category></category></item><item><title><![CDATA[JS原型与原型链终极详解]]></title><link>https://blog.youkuaiyun.com/zyx196/article/details/51556163</link><guid>https://blog.youkuaiyun.com/zyx196/article/details/51556163</guid><author>zyx196</author><pubDate>Wed, 01 Jun 2016 15:12:01 +0800</pubDate><description><![CDATA[JS原型与原型链终极详解
  在上面的例子中 o1 o2 o3 为普通对象，f1 f2 f3 为函数对象。怎么区分，其实很简单，凡是通过
 new Function() 创建的对象都是函数对象，其他的都是普通对象。f1,f2,归根结底都是通过 new Function()的方式进行创建的。Function Object 也都是通过 New Function()创建的。

二. 原型对象
]]></description><category></category></item><item><title><![CDATA[针对苹果最新审核要求为应用兼容IPv6]]></title><link>https://blog.youkuaiyun.com/zyx196/article/details/51392879</link><guid>https://blog.youkuaiyun.com/zyx196/article/details/51392879</guid><author>zyx196</author><pubDate>Fri, 13 May 2016 10:05:45 +0800</pubDate><description><![CDATA[针对苹果最新审核要求为应用兼容IPv6

在WWDC2015上苹果宣布iOS9将支持纯IPv6的网络服务。2016年初开始所有提交到App Store的应用必须支持IPv6。为确保现有的应用是兼容的，我们需要注意下面几点。

不建议使用底层的网络API



下图展示的蓝色部分的这些API都是不存在兼容性问题的，而我们平时自己用的包括那些第三方的网络库大部分都是用的这些API。
]]></description><category></category></item><item><title><![CDATA[深入理解Runloop(补充)]]></title><link>https://blog.youkuaiyun.com/zyx196/article/details/50920752</link><guid>https://blog.youkuaiyun.com/zyx196/article/details/50920752</guid><author>zyx196</author><pubDate>Fri, 18 Mar 2016 10:55:31 +0800</pubDate><description><![CDATA[看完ibreme写的深入理解Runloop(这里)，确实非常详细，描述了Runloop概念、原理及主要几个运用库。
这里我再结合几个与Runloop相关的API进行进一步的说明，更方便大家理解：
1、run相关：



-
 run

-
 runMode:beforeDate:

-
 runUntilDate:







在深入理解Runloop中]]></description><category></category></item><item><title><![CDATA[UIKit性能调优实战讲解]]></title><link>https://blog.youkuaiyun.com/zyx196/article/details/50906460</link><guid>https://blog.youkuaiyun.com/zyx196/article/details/50906460</guid><author>zyx196</author><pubDate>Wed, 16 Mar 2016 16:48:12 +0800</pubDate><description><![CDATA[作者：bestswifter
在使用UIKit的过程中，性能优化是永恒的话题。很多人都看过分析优化滑动性能的文章，但其中不少文章只介绍了优化方法却对背后的原理避而不谈，或者是晦涩难懂而且读者缺乏实践体验的机会。不妨思考一下下面的问题自己是否有一个清晰的认识：


为什么要把控件尽量设置成不透明的，如果是透明的会有什么影响，如何检测这种影响？

为什么cell中的图片，尽可能要使用正确的]]></description><category></category></item><item><title><![CDATA[漫谈iOS程序的证书和签名机制]]></title><link>https://blog.youkuaiyun.com/zyx196/article/details/50857708</link><guid>https://blog.youkuaiyun.com/zyx196/article/details/50857708</guid><author>zyx196</author><pubDate>Fri, 11 Mar 2016 17:23:01 +0800</pubDate><description><![CDATA[接触iOS开发半年，曾经也被这个主题坑的摸不着头脑，也在淘宝上买过企业证书签名这些服务，有大神都做了一个全自动的发布打包（不过此大神现在不卖企业证书了），甚是羡慕和崇拜。于是，花了一点时间去研究了一下iOS这套证书和签名机制，并撰文分享给需要的朋友。由于本人才疏学浅，多有遗漏或错误之处，还请大神多多指教。

非对称加密和摘要

非对称加密的特性和用法

非对称加密算法可能是世界上最重要]]></description><category></category></item><item><title><![CDATA[Objective-C的AutoreleasePool与Runloop的关联]]></title><link>https://blog.youkuaiyun.com/zyx196/article/details/50824564</link><guid>https://blog.youkuaiyun.com/zyx196/article/details/50824564</guid><author>zyx196</author><pubDate>Tue, 08 Mar 2016 11:30:55 +0800</pubDate><description><![CDATA[注释AutoreleasePool的源码在runtime/NSObject.mm中可以找到。
相信很多人都知道，autorelease就是让对象延迟释放，很多人还更具体的以为是在出了作用域释放，也有的说是出了作用域后某个时间点，但是具体是在啥时候呢，也不清楚。


那具体如何呢，我们还是要到源码里才能一探究竟：
我们先新建一个项目，并跟踪一个对象的内存情况，我们可以看到如下截图内容，在o]]></description><category></category></item><item><title><![CDATA[深入理解Runloop]]></title><link>https://blog.youkuaiyun.com/zyx196/article/details/50825869</link><guid>https://blog.youkuaiyun.com/zyx196/article/details/50825869</guid><author>zyx196</author><pubDate>Tue, 08 Mar 2016 11:28:21 +0800</pubDate><description><![CDATA[RunLoop 是 iOS 和 OS X 开发中非常基础的一个概念，这篇文章将从 CFRunLoop 的源码入手，介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中，苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。


目录



RunLoop 的概念


RunLoop 与线程的关系


RunLoop 对]]></description><category></category></item><item><title><![CDATA[在非越狱手机上进行App Hook]]></title><link>https://blog.youkuaiyun.com/zyx196/article/details/50820774</link><guid>https://blog.youkuaiyun.com/zyx196/article/details/50820774</guid><author>zyx196</author><pubDate>Mon, 07 Mar 2016 17:10:48 +0800</pubDate><description><![CDATA[http://drops.wooyun.org/papers/12803


0x00 序


冰指的是用户态，火指的是内核态。如何突破像冰箱一样的用户态沙盒最终到达并控制如火焰一般燃烧的内核就是《iOS冰与火之歌》这一系列文章将要讲述的内容。但在讲主线剧情前，我们今天先聊一聊分支剧情 - 在非越狱的iOS上进行App Hook。利用这个技术，你可以在非越狱的iOS系统上实现各种hoo]]></description><category></category></item><item><title><![CDATA[dyld: Dynamic Linking On OS X]]></title><link>https://blog.youkuaiyun.com/zyx196/article/details/50820355</link><guid>https://blog.youkuaiyun.com/zyx196/article/details/50820355</guid><author>zyx196</author><pubDate>Mon, 07 Mar 2016 16:32:43 +0800</pubDate><description><![CDATA[https://www.mikeash.com/pyblog/friday-qa-2012-11-09-dyld-dynamic-linking-on-os-x.html

In the course of a recent job interview, I had an opportunity to study some of the internals ofdyld, the OS X d]]></description><category></category></item><item><title><![CDATA[Objective-C的Category与关联对象实现原理]]></title><link>https://blog.youkuaiyun.com/zyx196/article/details/50816976</link><guid>https://blog.youkuaiyun.com/zyx196/article/details/50816976</guid><author>zyx196</author><pubDate>Mon, 07 Mar 2016 16:14:34 +0800</pubDate><description><![CDATA[1、什么是Category

category是Objective-C 2.0之后添加的语言特性，category的主要作用是为已经存在的类添加方法。除此之外，apple还推荐了category的另外两个使用场景1

可以把类的实现分开在几个不同的文件里面。这样做有几个显而易见的好处，a)可以减少单个文件的体积 b)可以把不同的功能组织到不同的category里 c)可以由多个开发者共同完]]></description><category></category></item><item><title><![CDATA[Objective-C Class 、 MetaClass、实例 详解]]></title><link>https://blog.youkuaiyun.com/zyx196/article/details/50780602</link><guid>https://blog.youkuaiyun.com/zyx196/article/details/50780602</guid><author>zyx196</author><pubDate>Wed, 02 Mar 2016 16:39:46 +0800</pubDate><description><![CDATA[如果用过运行时做过一些实现，对下面的代码你应该不会陌生：
Class newClass =
objc_allocateClassPair([NSError class], "RuntimeErrorSubclass", 0);//1
class_addMethod(newClass, @selector(report), (IMP)ReportFunction, "v@:");//2
objc_]]></description><category></category></item></channel></rss>