<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Kurry的博客]]></title><description><![CDATA[华丽的跌倒,胜过无畏的徘徊!]]></description><link>https://blog.youkuaiyun.com/KurryGo</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; KurryGo]]></copyright><item><title><![CDATA[项目目录结构管理V1.0.0]]></title><link>https://blog.youkuaiyun.com/KurryGo/article/details/114671337</link><guid>https://blog.youkuaiyun.com/KurryGo/article/details/114671337</guid><author>KurryGo</author><pubDate>Thu, 11 Mar 2021 19:57:05 +0800</pubDate><description><![CDATA[1.前言
&nbsp; &nbsp; &nbsp; 清晰的项目目录结构有利于项目的开发，同时也是软件架构的一部分，所以，对于之前的项目进行了整理，目录结构如下：
2.项目目录结构V1.0.0
项目目录
├── Main
│   ├── AppDelegate.h
│   └── AppDelegate.m
│   └── XMStartImage.png
├── RootModule
│   ├── ConfigConstants.h
│   ├── Api
│   │   └── ApiProtocol.]]></description><category></category></item><item><title><![CDATA[2021-02-23]]></title><link>https://blog.youkuaiyun.com/KurryGo/article/details/113991977</link><guid>https://blog.youkuaiyun.com/KurryGo/article/details/113991977</guid><author>KurryGo</author><pubDate>Tue, 23 Feb 2021 15:55:54 +0800</pubDate><description><![CDATA[iOS 注意事项及代码规范
注意事项:
健壮性检查（尤其是空指针异常，数组边界溢出）
是否无意中陷入了死循环
是否存在内存泄漏的情况
是否存在运行时错误（除以零的情况）
是否存在主线程里面有耗时操作的情况
是否存在子线程里面有更新UI的情况
重用性检查（是否存在相同的方法写了两次，是否可以写成通用类、方法、组件等）
性能检查（UI布局是否最优，tableview等滑动页面是否卡顿）
是否存在同步执行太慢，需要转成异步执行的情况
是否存在重复多次或不合理调用接口情况
一、项目结构：（采用MVVM）
Appde]]></description><category></category></item><item><title><![CDATA[iOS即时通讯详解]]></title><link>https://blog.youkuaiyun.com/KurryGo/article/details/106548938</link><guid>https://blog.youkuaiyun.com/KurryGo/article/details/106548938</guid><author>KurryGo</author><pubDate>Thu, 04 Jun 2020 16:01:28 +0800</pubDate><description><![CDATA[iOS即时通讯详解
iOS即时通讯，从入门到“放弃”？涂耀辉关注302018.01.03 22:11:19字数 8,367阅读 74,714






前言

本文会用实例的方式，将iOS各种IM的方案都简单的实现一遍。并且提供一些选型、实现细节以及优化的建议。
注：文中的所有的代码示例，在github中都有demo：
iOS即时通讯，从入门到“放弃”？(demo)
可以打开项目先预览效果，对照着进行阅读。

言归正传，首先我们来总结一下我们去实现IM的方式
第一种方式，使用第三方IM服务
对于短平快的公]]></description><category></category></item><item><title><![CDATA[iOS 三种工厂模式(简单工厂模式、工厂模式、抽象工厂模式)详解]]></title><link>https://blog.youkuaiyun.com/KurryGo/article/details/102501187</link><guid>https://blog.youkuaiyun.com/KurryGo/article/details/102501187</guid><author>KurryGo</author><pubDate>Fri, 11 Oct 2019 14:52:40 +0800</pubDate><description><![CDATA[iOS 三种工厂模式(简单工厂模式、工厂模式、抽象工厂模式)32017.01.03 16:36:56字数 2559阅读 8507说明：在我理解中，这里所谓的抽象，其实就是制定某一个接口规范。具体体现在代码里，就是设置一个基类，基类遵守某一套接口规范，但是其具体的实现则通过子类化来完成。当然，这里我们也可以使用协议来规范这套接口规范。相对的，具体就是具有对抽象做子类化之后产生的实体。
1. 简单工厂...]]></description><category></category></item><item><title><![CDATA[iOS开发-队列和同步异步执行]]></title><link>https://blog.youkuaiyun.com/KurryGo/article/details/83591107</link><guid>https://blog.youkuaiyun.com/KurryGo/article/details/83591107</guid><author>KurryGo</author><pubDate>Wed, 31 Oct 2018 21:33:17 +0800</pubDate><description><![CDATA[串行队列，并发队列，全局队列（并发），主队列（串行）。
执行的方法有：同步执行和异步执行。
提到多线程：pthread，NSThread，GCD，NSOperation  
其中phtread是跨平台的。 
GCD和NSOperation都是常用的，后者是基于前者的。
两者区别： 
GCD的核心概念是将一个任务添加到队列，指定任务执行的方法，然后执行。 
 NSOperation则是直接将一个操作...]]></description><category></category></item><item><title><![CDATA[json、xml解析]]></title><link>https://blog.youkuaiyun.com/KurryGo/article/details/83276355</link><guid>https://blog.youkuaiyun.com/KurryGo/article/details/83276355</guid><author>KurryGo</author><pubDate>Mon, 22 Oct 2018 17:50:00 +0800</pubDate><description><![CDATA[
          
            








除了XML和Json，文中还涉及到的一些知识：第三方类库的使用，获取本地文件内容，网站API使用，GCD多线程编程，不做详细介绍，在代码出现的地方会注明。

先安利一波：
Json
XML
大数据时代，我们需要从网络中获取海量的新鲜的各种信息，就不免要跟着两个家伙打交道，这是两种结构化的数据交换格式。一般来讲，我们会从网络获取XML...]]></description><category></category></item><item><title><![CDATA[iOS SDK 打包framework]]></title><link>https://blog.youkuaiyun.com/KurryGo/article/details/83150959</link><guid>https://blog.youkuaiyun.com/KurryGo/article/details/83150959</guid><author>KurryGo</author><pubDate>Thu, 18 Oct 2018 18:23:52 +0800</pubDate><description><![CDATA[
                              
                  本文为转载,原博主地址：                  https://blog.youkuaiyun.com/shihuboke/article/details/78450955                
                            
//联系人:石虎&amp;nbsp;QQ:1...]]></description><category></category></item><item><title><![CDATA[关于Runtime在项目中使用的总结]]></title><link>https://blog.youkuaiyun.com/KurryGo/article/details/82853008</link><guid>https://blog.youkuaiyun.com/KurryGo/article/details/82853008</guid><author>KurryGo</author><pubDate>Wed, 26 Sep 2018 14:33:41 +0800</pubDate><description><![CDATA[runtime的实际运用
避免nsnull崩溃
问题背景：在项目开发中，由于各种各样的原因，服务器接口常常会返回null，而在Objective-C中，向null 发送消息会引发 unrecognized selector的异常，引起app崩溃，产品体验非常不好。 
解决方案：一种解决方案是获得服务器接口返回的数据后，进行判断，如果是null，则赋值一个空字符串，或者进行相应的处理，避免崩溃。但是...]]></description><category></category></item><item><title><![CDATA[category 详解]]></title><link>https://blog.youkuaiyun.com/KurryGo/article/details/82852657</link><guid>https://blog.youkuaiyun.com/KurryGo/article/details/82852657</guid><author>KurryGo</author><pubDate>Wed, 26 Sep 2018 14:14:42 +0800</pubDate><description><![CDATA[
								            
						
我们讲解的category分为三个部分：
1：怎么用：运用场景
2：不能用：争议性的特点：能做什么不能做什么
3：原因：内部原理

前言：
无论一个类设计的多么完美，在未来的需求演进中，都有可能会碰到一些无法预测的情况。那怎么扩展已有的类呢？一般而言，继承和组合是不错的选择。但是在Objective-C 2.0中，又提供了category这...]]></description><category></category></item><item><title><![CDATA[IOS LLDB断点调试]]></title><link>https://blog.youkuaiyun.com/KurryGo/article/details/82850138</link><guid>https://blog.youkuaiyun.com/KurryGo/article/details/82850138</guid><author>KurryGo</author><pubDate>Wed, 26 Sep 2018 10:48:32 +0800</pubDate><description><![CDATA[
								            
						
                原文地址：http://www.jianshu.com/p/d6a0a5e39b0eLLDB阐述LLDB 是一个有着 REPL 的特性和 C++ ,Python 插件的开源调试器。LLDB 绑定在 Xcode 内部，存在于主窗口底部的控制台中。调试器允许你在程序运行的特定时暂停它，你可以查看变量的值，执行自定...]]></description><category></category></item><item><title><![CDATA[如何搭建IPv6测试环境]]></title><link>https://blog.youkuaiyun.com/KurryGo/article/details/79876604</link><guid>https://blog.youkuaiyun.com/KurryGo/article/details/79876604</guid><author>KurryGo</author><pubDate>Tue, 10 Apr 2018 09:54:08 +0800</pubDate><description><![CDATA[
          
            
这个 IPv6 的东东都是多少年前研究的了，记得大学老师讲课时，给每一届学生讲到这个前沿的东西时候（记得是 计算机网络 课程的最后一章）都会感慨一番说我像你们上大学的时候这个 IPv6 就做为前沿技术来讲，到现在还原地不动（此处老师内牛满面��，宝宝心里苦a，但宝宝不说出）。然而，某果公司真吊，财大气粗，一句话放出来，下面的小喽啰们就忙起来了。。。...]]></description><category></category></item><item><title><![CDATA[如何快速的开发直播App]]></title><link>https://blog.youkuaiyun.com/KurryGo/article/details/79853107</link><guid>https://blog.youkuaiyun.com/KurryGo/article/details/79853107</guid><author>KurryGo</author><pubDate>Sun, 08 Apr 2018 15:52:41 +0800</pubDate><description><![CDATA[
          
            目录

【如何快速的开发一个完整的iOS直播app】(原理篇)
【如何快速的开发一个完整的iOS直播app】(播放篇)
【如何快速的开发一个完整的iOS直播app】(采集篇)
【如何快速的开发一个完整的iOS直播app】(美颜篇)

前言
大半年没写博客了，但我一直关注着互联网的动向，最近会研究很多东西，并分享，今年移动直播行业的兴起，诞生了一大批网...]]></description><category></category></item><item><title><![CDATA[ios 11及iPhone X的那些事]]></title><link>https://blog.youkuaiyun.com/KurryGo/article/details/79852163</link><guid>https://blog.youkuaiyun.com/KurryGo/article/details/79852163</guid><author>KurryGo</author><pubDate>Sun, 08 Apr 2018 15:02:18 +0800</pubDate><description><![CDATA[
          
            
前段时间苹果发布新产品，iPhone8、iPhone 8 plus、iPhoneX，同时也发布了iOS 11，之前一直吐槽Android的适配，现在也第一次体会到了面向机型适配的感受了。反正苹果开心了，友商看到所谓的产品也开心了，大家都是买买买，苦逼的只有我们这群开发者了。


ps:以下内容一些引用于它人的博客文章，我都会给出来源的。一些为自己的...]]></description><category></category></item><item><title><![CDATA[ios  图像识别技术总结]]></title><link>https://blog.youkuaiyun.com/KurryGo/article/details/79852094</link><guid>https://blog.youkuaiyun.com/KurryGo/article/details/79852094</guid><author>KurryGo</author><pubDate>Sun, 08 Apr 2018 14:58:40 +0800</pubDate><description><![CDATA[
          
            iOS通过摄像头动态识别图像
前言：

目前的计算机图像识别，透过现象看本质，主要分为两大类:

基于规则运算的图像识别，例如颜色形状等模板匹配方法
基于统计的图像识别。例如机器学习ML，神经网络等人工智能方法

区别：模板匹配方法适合固定的场景或物体识别，机器学习方法适合大量具有共同特征的场景或物体识别。
对比：无论从识别率，准确度，还是适应多变场...]]></description><category></category></item><item><title><![CDATA[iOS框架研究之SDWebImage的原理以及使用流程]]></title><link>https://blog.youkuaiyun.com/KurryGo/article/details/79852035</link><guid>https://blog.youkuaiyun.com/KurryGo/article/details/79852035</guid><author>KurryGo</author><pubDate>Sun, 08 Apr 2018 14:55:44 +0800</pubDate><description><![CDATA[
          
            iOS框架研究之SDWebImage的原理以及使用流程SDWebImage这个类库提供一个UIImageView类别以支持加载来自网络的远程图片。具有缓存管理、异步下载、同一个URL下载次数控制和优化等特征。SDWebImage支持异步的图片下载+缓存，提供了UIImageView+WebCacha的category，方便使用。SDWebImage加...]]></description><category></category></item><item><title><![CDATA[AR Kit初步学习总结]]></title><link>https://blog.youkuaiyun.com/KurryGo/article/details/79224415</link><guid>https://blog.youkuaiyun.com/KurryGo/article/details/79224415</guid><author>KurryGo</author><pubDate>Thu, 01 Feb 2018 09:48:55 +0800</pubDate><description><![CDATA[一、AR简介：
增强现实技术（Augmented Reality，简称 AR），是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D模型的技术，这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动.
一个最简单地AR场景实现所需要的技术以及步骤包含如下：多媒体捕捉现实图像：如摄像头
三维建模:3D立体模型
传感器追踪:主要追踪现实世界动态物体的六轴变化，这六轴分别是X、Y、Z轴位移及]]></description><category></category></item><item><title><![CDATA[UITableView自动计算cell高度并缓存]]></title><link>https://blog.youkuaiyun.com/KurryGo/article/details/74892506</link><guid>https://blog.youkuaiyun.com/KurryGo/article/details/74892506</guid><author>KurryGo</author><pubDate>Sun, 09 Jul 2017 16:28:55 +0800</pubDate><description><![CDATA[快来瞧瞧啊!本文来自简书，原文地址:http://www.jianshu.com/p/64f0e1557562这篇文章我们来讲一下UITableView的cell自适应高度，以及遇到的问题的解决办法。在看文章之前希望你已经会UITableView的基本使用了。先奉上这篇文章的demo的Github地址：UITableViewCellHeightDemo。大家可以下载下来和文章配合看。cell高度计算]]></description><category></category></item><item><title><![CDATA[正确处理ipv6和内购(IAP)及掉单问题]]></title><link>https://blog.youkuaiyun.com/KurryGo/article/details/74892142</link><guid>https://blog.youkuaiyun.com/KurryGo/article/details/74892142</guid><author>KurryGo</author><pubDate>Sun, 09 Jul 2017 16:14:54 +0800</pubDate><description><![CDATA[本文来自简书，原文地址:http://www.jianshu.com/p/b7195675ffdd最近开发一个项目涉及到内购, 也遇到过一些问题. 这里拿出来分享一下, 避免一些人走弯路.
开头先聊一聊最近苹果关于2017年新的审核机制和沸沸扬扬的微信和苹果的撕逼
1. 2017新的审核机制:ipv6: 使用国内阿里云的app上架, 大都会遇到ipv6被拒的邮件:
解决方案:
方案1. 服务端解决:]]></description><category></category></item><item><title><![CDATA[iOS Runtime的使用]]></title><link>https://blog.youkuaiyun.com/KurryGo/article/details/72902703</link><guid>https://blog.youkuaiyun.com/KurryGo/article/details/72902703</guid><author>KurryGo</author><pubDate>Wed, 07 Jun 2017 18:15:07 +0800</pubDate><description><![CDATA[欢迎来到华丽的跌倒的博客
          阅读了多篇运行时的文章,感觉都很不错,从几篇文章里面提取一些个人认为比较重要的,偏实战的知识点的摘录,另外还结合了个人的创造形成此文。再牛逼的技术和实战结合才有意义，本篇介绍技术尽量和实战联系起来，有些没讲明白的，我给的链接里面都有，所以我就不赘述了，如果觉得可以就点个赞吧，哈哈。不需要打赏。1)替换系统方法,2)字典转model,3)归档,4)万能控制]]></description><category></category></item><item><title><![CDATA[iOS 视频播放]]></title><link>https://blog.youkuaiyun.com/KurryGo/article/details/72902687</link><guid>https://blog.youkuaiyun.com/KurryGo/article/details/72902687</guid><author>KurryGo</author><pubDate>Wed, 07 Jun 2017 18:13:25 +0800</pubDate><description><![CDATA[1 AVPlayer
(1) 优缺点
优点:可以自定义 UI, 进行控制
缺点:单纯的播放,没有控制 UI(进度,暂停,播放等按钮),而且如果要显示播放界面, 需要借助AVPlayerLayer, 添加图层到需要展示的图层上
(2)实现远程视频播放实现播放功能(只有声音)1.导入框架#import <AVFoundation/AVFoundation.h>2.通过远程 URL 创建 AVPlayer]]></description><category></category></item></channel></rss>