<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[忆思梦]]></title><description><![CDATA[iOS开发]]></description><link>https://blog.youkuaiyun.com/u013192575</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u013192575]]></copyright><item><title><![CDATA[iOS 签名]]></title><link>https://blog.youkuaiyun.com/u013192575/article/details/85164438</link><guid>https://blog.youkuaiyun.com/u013192575/article/details/85164438</guid><author>u013192575</author><pubDate>Fri, 21 Dec 2018 16:35:22 +0800</pubDate><description><![CDATA[原文地址
因为苹果的安全策略，通过签名机制保证手机上的每个app都是经过苹果认证的。安装方式：

通过App Store安装。
开发者可以通过Xcode安装。
Ad-Hoc 测试证书打包的app，数量限制100。
In-House 企业版证书打包app，信任企业证书后可以使用。

一、 通过App Store安装


由苹果生成一对公私钥，公钥内置与iOS设备中，私钥由苹果保管。
开发者上传app...]]></description><category></category></item><item><title><![CDATA[Winding Rules 缠绕规则]]></title><link>https://blog.youkuaiyun.com/u013192575/article/details/84992540</link><guid>https://blog.youkuaiyun.com/u013192575/article/details/84992540</guid><author>u013192575</author><pubDate>Thu, 13 Dec 2018 17:47:32 +0800</pubDate><description><![CDATA[在实现一个镂空的效果时，发下路径的方向，会影响最终实现的效果，所以进一步研究了一下。
当填充路径所包含的区域时，NSBezierPath 会通过缠绕规则来判断需要填充的区域。通过给定区域内的任意一点到路径外画一条射线，根据与路径的交叉数判断点是否在区域内。
缠绕规则：

NSNonZeroWindingRule：非零缠绕。射线从左到右每交叉路径一次+1，从右到左每交叉一次-1。如果最终交叉数为0，...]]></description><category></category></item><item><title><![CDATA[GCD]]></title><link>https://blog.youkuaiyun.com/u013192575/article/details/84944439</link><guid>https://blog.youkuaiyun.com/u013192575/article/details/84944439</guid><author>u013192575</author><pubDate>Mon, 10 Dec 2018 18:35:36 +0800</pubDate><description><![CDATA[Grand Central Dispatch
GCD 是异步执行任务的技术之一，提供系统级线程管理，具有高执行效率。开发者只需要将要执行的任务添加到适当的 Dispatch Queue 中，由系统自动调度执行。iOS6以后被纳入到 ARC 的范围内，不需要手动管理了。

通常应用程序中的线程管理要在系统层级实现，GCD是在iOS和OSX的核心XNU内核级上实现。

Dispatch Queue
D...]]></description><category></category></item><item><title><![CDATA[weak]]></title><link>https://blog.youkuaiyun.com/u013192575/article/details/84848967</link><guid>https://blog.youkuaiyun.com/u013192575/article/details/84848967</guid><author>u013192575</author><pubDate>Thu, 06 Dec 2018 10:59:54 +0800</pubDate><description><![CDATA[weak
weak 是弱引用（不持有），与 strong 相对。
内部实现
Runtime 维护着一个全局的哈希表，即由自旋锁控制的弱引用表（weak_table_t），以对象地址为key，以指向对象的弱引用的散列集合为value。
// 全局弱引用表
struct weak_table_t {
    weak_entry_t *weak_entries; // 所有的弱引用记录
};
// 弱...]]></description><category></category></item><item><title><![CDATA[Crash & Error]]></title><link>https://blog.youkuaiyun.com/u013192575/article/details/84791725</link><guid>https://blog.youkuaiyun.com/u013192575/article/details/84791725</guid><author>u013192575</author><pubDate>Tue, 04 Dec 2018 17:06:10 +0800</pubDate><description><![CDATA[crash
收集crash

连接设备，window-&amp;gt;devices-&amp;gt;View device logs
线上：通过iTunes connect，app资讯页面，有一个【Crash Reports】链接。
线上：window-&amp;gt;Organizer-&amp;gt;上方【Crashs】
iOS设备上保存的Crash，设置-&amp;gt;隐私-&amp;gt;诊断与用量-&amp;gt;诊断与用量数据，这里保存...]]></description><category></category></item><item><title><![CDATA[ObjC 源码]]></title><link>https://blog.youkuaiyun.com/u013192575/article/details/84401308</link><guid>https://blog.youkuaiyun.com/u013192575/article/details/84401308</guid><author>u013192575</author><pubDate>Fri, 23 Nov 2018 17:45:55 +0800</pubDate><description><![CDATA[类的结构
typedef struct objc_class *Class;

struct objc_class {
    Class isa;
    Class super_class;
    const char *name;
    long version;
    long info;
    long instance_size;
    struct objc_ivar_li...]]></description><category></category></item><item><title><![CDATA[仿微博、简书个人页 YSMContainerView]]></title><link>https://blog.youkuaiyun.com/u013192575/article/details/84139082</link><guid>https://blog.youkuaiyun.com/u013192575/article/details/84139082</guid><author>u013192575</author><pubDate>Fri, 16 Nov 2018 14:44:23 +0800</pubDate><description><![CDATA[一个比较易于接入的，简单的实现微博简书等个人页的轮子。
Demo地址
之前面试被问到了微博个人页的实现，应该是考查手势冲突的问题，回来之后按照自己的想法实现了一个，但是扩展性始终不太好，最近仿照UITableView的方式重新实现了一个版本。

介绍
YSMContainerView： 继承自UIView，是整个视图的容器。
YSMContainerViewDataSource： YSMConta...]]></description><category></category></item><item><title><![CDATA[CocoaPods 私有库 实现组件化]]></title><link>https://blog.youkuaiyun.com/u013192575/article/details/84025002</link><guid>https://blog.youkuaiyun.com/u013192575/article/details/84025002</guid><author>u013192575</author><pubDate>Tue, 13 Nov 2018 10:58:39 +0800</pubDate><description><![CDATA[先说下CocoaPods拉取开源库的原理：

我们知道 CocoaPods 有一个开源的索引仓库[Specs](https://github.com/CocoaPods/Specs)，仓库存放着所有开源库的各个版本的`.podspec`文件，`.podspec`文件包含中记录着源码的地址。我们首次使用CocoaPods时，会将这个文件库克隆到本地`~/.cocoapods/repos/master...]]></description><category></category></item><item><title><![CDATA[简述静态库和动态库]]></title><link>https://blog.youkuaiyun.com/u013192575/article/details/83542653</link><guid>https://blog.youkuaiyun.com/u013192575/article/details/83542653</guid><author>u013192575</author><pubDate>Tue, 30 Oct 2018 16:29:57 +0800</pubDate><description><![CDATA[1 介绍

静态库：链接是直接拷贝到可执行文件中，app间不共用。文件为 .a 和 .framework 。

动态库：链接时不复制，程序运行时由系统动态加载到内存，系统只加载一次，APP间共用。文件为 .framework 和 .tdb 。

Embedded Binaries： 嵌入二进制，会把库文件嵌入到APP的Bundle中（ipa包中），程序运行时会从bundle中加载库。

Linke...]]></description><category></category></item><item><title><![CDATA[UITableView的contentSize]]></title><link>https://blog.youkuaiyun.com/u013192575/article/details/50164001</link><guid>https://blog.youkuaiyun.com/u013192575/article/details/50164001</guid><author>u013192575</author><pubDate>Thu, 03 Dec 2015 18:02:53 +0800</pubDate><description><![CDATA[我们都知道由于UITableView是继承自UIScrollView的，所以他是可以设置contentsize的。 但是，我在试验的过程中，初始化UITableView实例后，直接设置它的contentsize是不起作用。    UITableView * tableView = [[UITableView alloc] initWithFrame:[UIScreen mainScreen].bo]]></description><category></category></item><item><title><![CDATA[iOS Core Image 复杂的滤镜]]></title><link>https://blog.youkuaiyun.com/u013192575/article/details/48710741</link><guid>https://blog.youkuaiyun.com/u013192575/article/details/48710741</guid><author>u013192575</author><pubDate>Thu, 24 Sep 2015 14:18:35 +0800</pubDate><description><![CDATA[在上一篇中几乎没有对滤镜进行更复杂的操作，都是直接把inputImage扔给CIFilter而已，而Core Image实际上还能对滤镜进行更加细粒度的控制，我们在新的工程中对其进行探索。为此，我重新建立了一个空的workspace，并把之前所使用的工程添加到这个workspace中，编译、运行，没问题的话我们就开始创建新的工程。

通过workspace左下角的Add Files to添加已]]></description><category></category></item><item><title><![CDATA[实现让你的应用在其他应用中文件的打开方式列表中显示]]></title><link>https://blog.youkuaiyun.com/u013192575/article/details/44653409</link><guid>https://blog.youkuaiyun.com/u013192575/article/details/44653409</guid><author>u013192575</author><pubDate>Thu, 26 Mar 2015 18:09:21 +0800</pubDate><description><![CDATA[要实现在其他应用中文件的打开方式列表中显示需要以下两个步骤（测试的时候需要真机条件）：
  ->首先要向iOS系统注册App能够打开的文件类型，这样其他应用程序在使用 Document Interaction 向系统询问有哪些程序可以打开文档
      时，系统才会将你的应用显示在“打开方式”的列表中。
  ->完成注册步骤后我们需求的功能就已经完成一大半了，现在进行真机测试比如在邮件里的]]></description><category></category></item><item><title><![CDATA[使用字符串来表示UIView的tag值]]></title><link>https://blog.youkuaiyun.com/u013192575/article/details/41791123</link><guid>https://blog.youkuaiyun.com/u013192575/article/details/41791123</guid><author>u013192575</author><pubDate>Sun, 07 Dec 2014 21:23:18 +0800</pubDate><description><![CDATA[首先声明这个方法非我原创！
这是一个同学想出来的
下面我们来说一下具体实现，使用tag值时，因为是一个毫无意义的数字，使用起来不免麻烦；加入我们使用字符串来设置tag值，例如：aLabel的tag值为“aLabel”，我们定义视图的时候，肯定不会定义相同名字的，那么这样是不是就更便于记了呢。
下面就来具体说说怎么实现吧，
首先我们要为UIView设置类目: " UIView+Tag "]]></description><category></category></item><item><title><![CDATA[iOS  很全的小技巧集合]]></title><link>https://blog.youkuaiyun.com/u013192575/article/details/41454679</link><guid>https://blog.youkuaiyun.com/u013192575/article/details/41454679</guid><author>u013192575</author><pubDate>Mon, 24 Nov 2014 21:55:00 +0800</pubDate><description><![CDATA[退回输入键盘
  - (BOOL)textFieldShouldReturn:(id)textField{
    [textField resignFirstResponder];
}
 
CGRect
CGRect frame = CGRectMake (origin.x,origin.y, size.width, size.height)；矩形
NSStringFromCGRe]]></description><category></category></item><item><title><![CDATA[info.plist文件中各键的含义，留着用]]></title><link>https://blog.youkuaiyun.com/u013192575/article/details/41452593</link><guid>https://blog.youkuaiyun.com/u013192575/article/details/41452593</guid><author>u013192575</author><pubDate>Mon, 24 Nov 2014 21:04:36 +0800</pubDate><description><![CDATA[UIRequiresPersistentWiFi 在程序中弹出wifi选择的key（系统设置中需要将wifi提示打开）
UIAppFonts 内嵌字体http://www.minroad.com/?p=412

UIApplicationExitsOnSuspend 程序是否在后台运行，自己在进入后台的时候exit(0)是很傻的办法
UIBackgroundModes 后台运行时的服务，具]]></description><category></category></item><item><title><![CDATA[学习GCD的一些基本用法]]></title><link>https://blog.youkuaiyun.com/u013192575/article/details/41421837</link><guid>https://blog.youkuaiyun.com/u013192575/article/details/41421837</guid><author>u013192575</author><pubDate>Sun, 23 Nov 2014 22:45:55 +0800</pubDate><description><![CDATA[1.首先我们先创建一个队列]]></description><category></category></item><item><title><![CDATA[iOS 简述消息推送流程]]></title><link>https://blog.youkuaiyun.com/u013192575/article/details/41419579</link><guid>https://blog.youkuaiyun.com/u013192575/article/details/41419579</guid><author>u013192575</author><pubDate>Sun, 23 Nov 2014 22:07:25 +0800</pubDate><description><![CDATA[1、应用程序注册消息推送。
2、iOS从APNS Server获取devicetoken，应用程序接收device token。
3、应用程序将device token发送给程序的PUSH服务端程序。
4、服务端程序向APNS服务发送消息。
5、APNS服务将消息发送给iPhone应用程序。]]></description><category></category></item><item><title><![CDATA[获取ios内存使用情况]]></title><link>https://blog.youkuaiyun.com/u013192575/article/details/41309583</link><guid>https://blog.youkuaiyun.com/u013192575/article/details/41309583</guid><author>u013192575</author><pubDate>Thu, 20 Nov 2014 10:59:12 +0800</pubDate><description><![CDATA[//获取当前设备可用内存及所占内存的头文件
#import 
#import 
// 获取当前设备可用内存(单位：MB）
- (double)availableMemory
{
  vm_statistics_data_t vmStats;
  mach_msg_type_number_t infoCount =HOST_VM_INFO_COUNT;
 kern_return_tk]]></description><category></category></item><item><title><![CDATA[iOS汉字转换成拼音]]></title><link>https://blog.youkuaiyun.com/u013192575/article/details/40834041</link><guid>https://blog.youkuaiyun.com/u013192575/article/details/40834041</guid><author>u013192575</author><pubDate>Wed, 05 Nov 2014 21:54:31 +0800</pubDate><description><![CDATA[//将汉字转换成拼音
    CFMutableStringRef className = CFStringCreateMutableCopy(nil, 0, (CFStringRef)class);
    CFStringTransform(className, nil, kCFStringTransformMandarinLatin, NO);
    //将拼音的音调去掉
    ]]></description><category></category></item></channel></rss>