<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ChSaDiN的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ChSaDiN</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ChSaDiN]]></copyright><item><title><![CDATA[Objective-C 对象模型深入理解]]></title><link>https://blog.youkuaiyun.com/ChSaDiN/article/details/80270778</link><guid>https://blog.youkuaiyun.com/ChSaDiN/article/details/80270778</guid><author>ChSaDiN</author><pubDate>Thu, 10 May 2018 17:13:20 +0800</pubDate><description><![CDATA[0x00序

本着加深对Objective-C 对象模型的理解和记忆目的，于是有了下文的简单实践操作。



0x01 疑问

在以下代码中，你能描述清楚以下问题吗?


TestClass的实例对象tcA和tcB的内存结构是怎么样的
TestClass的实例对象的大小




@interface TestClass : NSObject
{
    @public
    int myInt;...]]></description><category></category></item><item><title><![CDATA[gdb 如何调试内存地址]]></title><link>https://blog.youkuaiyun.com/ChSaDiN/article/details/75454035</link><guid>https://blog.youkuaiyun.com/ChSaDiN/article/details/75454035</guid><author>ChSaDiN</author><pubDate>Thu, 20 Jul 2017 09:18:40 +0800</pubDate><description><![CDATA[样例代码   int age= 20;
   int *p_age = &age; 
   NSLog(@"p_age       = %p", p_age);   //输出指针变量p_age指向值20所在内存的地址
   NSLog(@"&p_age      = %p", &p_age);  //输出指针变量p_age本身的地址    2017-07-19 15:54:07.048 Test07]]></description><category></category></item><item><title><![CDATA[iOS--自动打包（兼容Xcode9）]]></title><link>https://blog.youkuaiyun.com/ChSaDiN/article/details/61192923</link><guid>https://blog.youkuaiyun.com/ChSaDiN/article/details/61192923</guid><author>ChSaDiN</author><pubDate>Fri, 10 Mar 2017 17:33:56 +0800</pubDate><description><![CDATA[iOS脚本配置Xcode Project（打包）



2018/04/19 更新 
当前IPABuildShell 已经支持Xcode 9（8.0~9.3）。最新代码详见 github源码





前言

作为iOS开发者，每次真机测试我都习惯在Build Settings中设置签名信息Code Signing Identity 、Development Team、 Provisioning ...]]></description><category></category></item><item><title><![CDATA[微信一键录音逆向分析]]></title><link>https://blog.youkuaiyun.com/ChSaDiN/article/details/52804158</link><guid>https://blog.youkuaiyun.com/ChSaDiN/article/details/52804158</guid><author>ChSaDiN</author><pubDate>Thu, 13 Oct 2016 09:47:05 +0800</pubDate><description><![CDATA[微信一键录音逆向分析2016/08/31 fenglh主题本次的主题是，把微信聊天界面中的‘按住说话’功能修改为：按一下就可以说话，再按一下就发送语音工具
cycript
iResign
Xcode]]></description><category></category></item><item><title><![CDATA[Facebook 开源动画框架 Pop]]></title><link>https://blog.youkuaiyun.com/ChSaDiN/article/details/52316233</link><guid>https://blog.youkuaiyun.com/ChSaDiN/article/details/52316233</guid><author>ChSaDiN</author><pubDate>Thu, 25 Aug 2016 16:55:38 +0800</pubDate><description><![CDATA[Facebook 开源动画框架 Pop作者：fenglh/2016.08.25继承关系创建动画使用POP可以创建4类动效：: spring, decay, basic and custom.Spring （弹性）动效可以赋予物体愉悦的弹性效果POPSpringAnimation *anim = [POPSpringAnimation animationWithPropertyNamed:kPOPLa]]></description><category></category></item><item><title><![CDATA[逆向分析isKindOfClass 内部实现]]></title><link>https://blog.youkuaiyun.com/ChSaDiN/article/details/51672087</link><guid>https://blog.youkuaiyun.com/ChSaDiN/article/details/51672087</guid><author>ChSaDiN</author><pubDate>Thu, 21 Jul 2016 17:27:40 +0800</pubDate><description><![CDATA[前段时间，同事给看了一段有趣的代码。对于这段代码执行的结果的出乎意外，我们产生了各种的猜测。但猜测毕竟只是猜测，难免会有误会。对于isKindOfClass的实现很好奇，于是决定探究一下isKindOfClass的内部实现！代码int main(int argc, const char * argv[]) {
    //测试1
    if ([[NSString class] isKindOfC]]></description><category></category></item><item><title><![CDATA[约束报错、冲突如何定位UI]]></title><link>https://blog.youkuaiyun.com/ChSaDiN/article/details/51920153</link><guid>https://blog.youkuaiyun.com/ChSaDiN/article/details/51920153</guid><author>ChSaDiN</author><pubDate>Fri, 15 Jul 2016 18:26:24 +0800</pubDate><description><![CDATA[问题在使用AutoLayout 或者masonry 布局UI的时候，经常会遇到约束冲突的警告。 
例如：图中，我们知道是一个Button的约束冲突了，但是不能很直接的让人知道是哪个Button。lldb要是能知道这个Button UIButton:0x12c7f6f30的title是什么，那么我们不就可以在代码中直接搜索该title，定位到代码中的Button？(lldb) po 0x12c7f6f]]></description><category></category></item><item><title><![CDATA[iOS 逆向-非越狱手机Hook App]]></title><link>https://blog.youkuaiyun.com/ChSaDiN/article/details/51613197</link><guid>https://blog.youkuaiyun.com/ChSaDiN/article/details/51613197</guid><author>ChSaDiN</author><pubDate>Mon, 13 Jun 2016 13:52:20 +0800</pubDate><description><![CDATA[引子



由于对iOS逆向分析很感兴趣,所以也花了很长一段时间学习了iOS逆向相关知识，并积累了一些相关经验， 
这几天又到看雪论坛逛了一下，看看最近有没有什么大牛分享心得成果的！还真让我看到一篇有意思的文章【原创】微信双开是定时炸弹？关于非越狱iOS上微信分身高危插件ImgNaix的分析 ，通过读完这篇文章，让我又有了站在巨人的肩膀上，也来探究和学习一下非越狱设备如何Hook App的兴趣了。...]]></description><category></category></item><item><title><![CDATA[Xcode 代码模板]]></title><link>https://blog.youkuaiyun.com/ChSaDiN/article/details/51362074</link><guid>https://blog.youkuaiyun.com/ChSaDiN/article/details/51362074</guid><author>ChSaDiN</author><pubDate>Tue, 10 May 2016 12:03:39 +0800</pubDate><description><![CDATA[当我们在Xcode中新建一个UIViewController子类的viewController 时候，Xcode会自动帮我们把一部分代码生成(viewDidLoad、didReceiveMemoryWarning方法等，以及注释)。今天，于是花了一点时间了研究了一下，并整理出一个简化模板拷贝以及修改TemplateInfo.plist 中后缀名的Shell 脚本工具。脚本脚本比较简单，就不详细解释了]]></description><category></category></item><item><title><![CDATA[iOS 运行时]]></title><link>https://blog.youkuaiyun.com/ChSaDiN/article/details/51222012</link><guid>https://blog.youkuaiyun.com/ChSaDiN/article/details/51222012</guid><author>ChSaDiN</author><pubDate>Fri, 22 Apr 2016 17:37:23 +0800</pubDate><description><![CDATA[# iOS 运行时
两个重要的类型id 与 Class,在 objc/objc.h 中可以找到两者定义typedef struct objc_object *id;
typedef struct objc_class *Class;id 与 Class 都是指向结构体的指针，下面看看两个结构体objc_object、objc_class 的区别：struct objc_object {
    Cl]]></description><category></category></item><item><title><![CDATA[pushViewController 与 presentViewController 与 TabBarController 之间切换VC]]></title><link>https://blog.youkuaiyun.com/ChSaDiN/article/details/48456177</link><guid>https://blog.youkuaiyun.com/ChSaDiN/article/details/48456177</guid><author>ChSaDiN</author><pubDate>Tue, 15 Sep 2015 01:06:37 +0800</pubDate><description><![CDATA[pushViewController 与 presentViewController 与 TabBarController 之间切换VC缘由pushViewController、presentViewController以及TabBarController这3中方法、他们都可以用来切换ViewController。由于在写代码的时候，产生了一些疑惑，切换之前和切换之后的ViewController他]]></description><category></category></item><item><title><![CDATA[ios内联函数 inline]]></title><link>https://blog.youkuaiyun.com/ChSaDiN/article/details/47982923</link><guid>https://blog.youkuaiyun.com/ChSaDiN/article/details/47982923</guid><author>ChSaDiN</author><pubDate>Tue, 25 Aug 2015 20:30:20 +0800</pubDate><description><![CDATA[ios内联函数 inline缘由由于在学习使用UIScrollVew开发的过程中，碰到下面这个属性（设置内边距）：@property(nonatomic)         UIEdgeInsets                 scrollIndicatorInsets;          // default is UIEdgeInsetsZero. adjust indicators insi]]></description><category></category></item><item><title><![CDATA[Swift 与Object C 的比较]]></title><link>https://blog.youkuaiyun.com/ChSaDiN/article/details/46874141</link><guid>https://blog.youkuaiyun.com/ChSaDiN/article/details/46874141</guid><author>ChSaDiN</author><pubDate>Tue, 14 Jul 2015 10:25:59 +0800</pubDate><description><![CDATA[1.swift 没有.h文件，也就是头文件 
2.swift对于类的声明是使用class关键字而不是interface  
3.swift使用var定义变量，默认是不是自动给变量赋初始值的 
4.swift中的问号，如，表示该变量的值是可选的，也就是说这个变量值可能为nil，也可能是一个具体的值。var typeName:String?5.那么对于这种声明时候带有问号（即声明为可选）的变量如何使用呢]]></description><category></category></item><item><title><![CDATA[web爬虫之登录google paly 商店]]></title><link>https://blog.youkuaiyun.com/ChSaDiN/article/details/46692387</link><guid>https://blog.youkuaiyun.com/ChSaDiN/article/details/46692387</guid><author>ChSaDiN</author><pubDate>Tue, 30 Jun 2015 10:33:27 +0800</pubDate><description><![CDATA[我们先打开Google play 首页 ,点击右上角“登陆”按钮，即跳到登陆页面
每次我要用爬虫的方式来登陆某个网站的时候，我都会先随便输入一个账号密码点击登陆一次，看看登陆之后会post出去的数据有哪些！那么，我觉得最方便而又是最常用的方法就是：火狐浏览器--web开发者工具--网络 

火狐浏览器-web开发者工具-网络

现在我们知道了google play登陆是要提交14个参数的]]></description><category></category></item><item><title><![CDATA[ios UIWebView中如何让图片大小适应屏幕宽度]]></title><link>https://blog.youkuaiyun.com/ChSaDiN/article/details/46294461</link><guid>https://blog.youkuaiyun.com/ChSaDiN/article/details/46294461</guid><author>ChSaDiN</author><pubDate>Mon, 01 Jun 2015 00:43:59 +0800</pubDate><description><![CDATA[1.采用在html的head中加mata标签

缺点：整个页面都会被缩小来适应屏幕宽度。
2.通过添加js来自动修改图片的大小。
缺点：图片的原本宽高大小是js所不知道的，不能按照图片宽高比来缩放到适应屏幕宽度。


3.遍历html中的img 标签，通过img标签中src值来下载图片以获取图片的宽高。在按照一定宽高比得到适应屏幕的宽和高之后，重新定义img标签（加上width和he]]></description><category></category></item><item><title><![CDATA[让面试官“告诉”你，你很出菜]]></title><link>https://blog.youkuaiyun.com/ChSaDiN/article/details/44561257</link><guid>https://blog.youkuaiyun.com/ChSaDiN/article/details/44561257</guid><author>ChSaDiN</author><pubDate>Mon, 23 Mar 2015 11:29:56 +0800</pubDate><description><![CDATA[一直以来觉得花时间去学习UI方面的知识，还不如深入去学习其他的知识，所以导致我在UI方面一直属于弱项。有一天我面试了一家公司。面试官问的问题，90%都是UI相关的，其中一段对话让我印象最深刻！”从事ios发开多久了？” “差不多一年了” 实际上是6个多月，说是一年，其实我是想表达我有足够经验！ “UITableView 会吗？自定义控件XXXXX..会吗？”因为我基本没有用过这东西，只是看过，想了想回答说“恩恩，用的不多，UITableView 不是就一个列表吗!，自定义控件的没怎么用过…有听说过（囧）”,]]></description><category></category></item><item><title><![CDATA[Google webp  编译生成 iOS  framework]]></title><link>https://blog.youkuaiyun.com/ChSaDiN/article/details/42917271</link><guid>https://blog.youkuaiyun.com/ChSaDiN/article/details/42917271</guid><author>ChSaDiN</author><pubDate>Tue, 20 Jan 2015 14:16:11 +0800</pubDate><description><![CDATA[什么是webp？这里我就不多说了，直接在官网黏一段描述过来：
WebP is a new image format that provides lossless and lossy compression for images on the web. WebP lossless images are 26% smaller in size compared to PNGs. WebP lossy]]></description><category></category></item><item><title><![CDATA[python 工具化查询苹果送审页面iTunes Connect的应用的各种信息]]></title><link>https://blog.youkuaiyun.com/ChSaDiN/article/details/42805637</link><guid>https://blog.youkuaiyun.com/ChSaDiN/article/details/42805637</guid><author>ChSaDiN</author><pubDate>Sat, 17 Jan 2015 15:24:19 +0800</pubDate><description><![CDATA[引子
作为ios开发人员，你经常-每天都要被产品的同学经常问你，这个app的状态怎么样了啊？进入审核了吗？过审了吗？游戏的Bundle ID是什么？Apple ID 是什么？等等诸如此类的事，你烦不烦,烦不烦？于是，就想着去做一个工具，来爬取iTunes Connect 的数据，这样不就可以让其他的同学自己去查！good idea!]]></description><category></category></item><item><title><![CDATA[xcodebuild 与 xcrun 命令行生成ipa]]></title><link>https://blog.youkuaiyun.com/ChSaDiN/article/details/41721597</link><guid>https://blog.youkuaiyun.com/ChSaDiN/article/details/41721597</guid><author>ChSaDiN</author><pubDate>Thu, 04 Dec 2014 11:24:21 +0800</pubDate><description><![CDATA[因为在使用xcode 工具打ipa不能一步做到全自动化，容易给自己和他人出错的机会。加上个人本身对linux bash shell脚本相对熟悉，mac shell  和linux基本一样的，于是就有了想做个脚本，来自动化处理 app(or静态库)---> 签名---->ipa的过程。
xcodebuild:通过工程文件，生成app文件
xcrun:通过app文件，来生成ipa文件]]></description><category></category></item><item><title><![CDATA[iOS 之 Bonjour 协议简单抓包分析]]></title><link>https://blog.youkuaiyun.com/ChSaDiN/article/details/38685995</link><guid>https://blog.youkuaiyun.com/ChSaDiN/article/details/38685995</guid><author>ChSaDiN</author><pubDate>Tue, 19 Aug 2014 18:20:09 +0800</pubDate><description><![CDATA[引子
因在学习ios编程之bonjour编程的过程中，对bonjour产生了一些些的ha]]></description><category></category></item></channel></rss>