<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[baikan6930的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/baikan6930</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; baikan6930]]></copyright><item><title><![CDATA[iOS  NSDecimalNumber  使用]]></title><link>https://blog.youkuaiyun.com/baikan6930/article/details/101693168</link><guid>https://blog.youkuaiyun.com/baikan6930/article/details/101693168</guid><author>baikan6930</author><pubDate>Tue, 07 May 2019 17:57:00 +0800</pubDate><description><![CDATA[在iOS开发中，经常遇到和货币价格计算相关的，这时就需要注意计算精度的问题。使用float类型运算，经常出现误差。为了解决这种问题我们使用NSDecimalNumber，下面将通过例子的形式给大家展示一下。
1.加法的运算
//方式1：不进行四舍五入
self.number1 = [NSDecimalNumber decimalNumberWithString:[NSStrin...]]></description><category></category></item><item><title><![CDATA[iOS 应用架构 (三)]]></title><link>https://blog.youkuaiyun.com/baikan6930/article/details/101693169</link><guid>https://blog.youkuaiyun.com/baikan6930/article/details/101693169</guid><author>baikan6930</author><pubDate>Wed, 10 Apr 2019 20:49:00 +0800</pubDate><description><![CDATA[iOS 客户端应用架构看似简单，但实际上要考虑的事情不少。本文作者将以系列文章的形式来回答 iOS 应用架构中的种种问题，本文是其中的第二篇，主要讲 View 层的组织和调用方案。下篇主要讨论做 View 层架构的设计的一些心法。
本门心法

重剑无锋，大巧不工。 ---- 《神雕侠侣》

这是杨过在挑剑时，玄铁重剑旁边写的一段话。对此我深表认同。提到这段话的目的是想告诉大家，...]]></description><category></category></item><item><title><![CDATA[iOS 应用架构 (二)]]></title><link>https://blog.youkuaiyun.com/baikan6930/article/details/101693165</link><guid>https://blog.youkuaiyun.com/baikan6930/article/details/101693165</guid><author>baikan6930</author><pubDate>Wed, 10 Apr 2019 20:48:00 +0800</pubDate><description><![CDATA[iOS 客户端应用架构看似简单，但实际上要考虑的事情不少。本文作者将以系列文章的形式来回答 iOS 应用架构中的种种问题，本文是其中的第二篇，主要讲 View 层的组织和调用方案。上篇主要讲 View 层的代码结构、布局，以及一些最佳实践的讨论。
当我们开始设计 View 层的架构时，往往是这个 App 还没有开始开发，或者这个 App 已经发过几个版本了，然后此时需要做非常彻底的重构...]]></description><category></category></item><item><title><![CDATA[iOS 应用架构 (一)]]></title><link>https://blog.youkuaiyun.com/baikan6930/article/details/101693166</link><guid>https://blog.youkuaiyun.com/baikan6930/article/details/101693166</guid><author>baikan6930</author><pubDate>Wed, 10 Apr 2019 20:46:00 +0800</pubDate><description><![CDATA[摘要：iOS 客户端应用架构看似简单，但实际上要考虑的事情不少。本文作者将以系列文章的形式来回答 iOS 应用架构中的种种问题，本文是其中的第一篇，主要讲架构设计的通识和方法论等，同时还讨论了大家关心的架构分层、是否要有 common 文件夹等问题。
缘由
之前安居客 iOS app 的第二版架构大部分内容是我做的，期间有总结了一些经验。在将近一年之后，前同事 zzz 在微信朋友圈上...]]></description><category></category></item><item><title><![CDATA[iOS VIPER架构(三)]]></title><link>https://blog.youkuaiyun.com/baikan6930/article/details/101693162</link><guid>https://blog.youkuaiyun.com/baikan6930/article/details/101693162</guid><author>baikan6930</author><pubDate>Mon, 08 Apr 2019 18:50:00 +0800</pubDate><description><![CDATA[路由是实现模块间解耦的一个有效工具。如果要进行组件化开发，路由是必不可少的一部分。目前iOS上绝大部分的路由工具都是基于URL匹配的，优缺点都很明显。这篇文章里将会给出一个更加原生和安全的设计，这个设计的特点是：

路由时用protocol寻找模块
可以对模块进行固定的依赖注入和运行时依赖注入
支持不同模块间进行接口适配和转发，因此无需和某个固定的protocol关联
充分解耦...]]></description><category></category></item><item><title><![CDATA[iOS    VIPER架构(二)]]></title><link>https://blog.youkuaiyun.com/baikan6930/article/details/101693163</link><guid>https://blog.youkuaiyun.com/baikan6930/article/details/101693163</guid><author>baikan6930</author><pubDate>Mon, 08 Apr 2019 18:25:00 +0800</pubDate><description><![CDATA[第一篇文章对VIPER进行了简单的介绍，这篇文章将从VIPER的源头开始，比较现有的几种VIPER实现，对VIPER进行进一步的职责剖析，并对各种细节实现问题进行挖掘和探讨。最后给出两个完整的VIPER实现，并且提供快速生成VIPER代码的模板。
Demo和轮子的github地址是：ZIKViper，路由工具：ZIKRouter。有用请点个star~
两个实现展示了以下问题的解决方案...]]></description><category></category></item><item><title><![CDATA[iOS    VIPER架构(一)]]></title><link>https://blog.youkuaiyun.com/baikan6930/article/details/101693159</link><guid>https://blog.youkuaiyun.com/baikan6930/article/details/101693159</guid><author>baikan6930</author><pubDate>Mon, 08 Apr 2019 18:22:00 +0800</pubDate><description><![CDATA[洋葱模型　　洋葱模型，是从冰山模型上演变而来的，用来进行层次分析的模型，这是Redux的洋葱模型。 
　　action从最外层传入，层层传递直至核心后，经过逐层事件触发，再次被分发出来，执行后续操作。
　　洋葱模型如今已经广泛应用于各个领域，进行更直观清晰的分层剖析。
The Clean Architecture　　Robert C·Martin是《Clean Code》的作者，我...]]></description><category></category></item><item><title><![CDATA[ios 根据字典自动生成属性]]></title><link>https://blog.youkuaiyun.com/baikan6930/article/details/101693158</link><guid>https://blog.youkuaiyun.com/baikan6930/article/details/101693158</guid><author>baikan6930</author><pubDate>Wed, 20 Mar 2019 21:19:00 +0800</pubDate><description><![CDATA[- (void)createPropertyCode{    NSMutableString *codes = [NSMutableString string];    // 遍历字典    [self enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull value, BOOL * _Nonnull ...]]></description><category></category></item><item><title><![CDATA[ios 设置cell的间距]]></title><link>https://blog.youkuaiyun.com/baikan6930/article/details/101693160</link><guid>https://blog.youkuaiyun.com/baikan6930/article/details/101693160</guid><author>baikan6930</author><pubDate>Wed, 20 Mar 2019 13:37:00 +0800</pubDate><description><![CDATA[1.设置假的间距，我们在tableviewcell的contentView上添加一个view，比如让其距离上下左右的距离都是10；这个方法是最容易想到的；

2.用UIContentView来代替tableview，然后通过下面这个函数来设置UICollectionViewCell的上下左右的间距；
&lt;span style="font-size:18px;"&gt;/...]]></description><category></category></item><item><title><![CDATA[ios  各种锁的使用性能比较]]></title><link>https://blog.youkuaiyun.com/baikan6930/article/details/101693156</link><guid>https://blog.youkuaiyun.com/baikan6930/article/details/101693156</guid><author>baikan6930</author><pubDate>Tue, 19 Mar 2019 13:56:00 +0800</pubDate><description><![CDATA[iOS开发中常用的锁有如下几种
来比较一下遇到加锁的情况：
1. @synchronized 关键字加锁
2. NSLock对象锁3. NSCondition4. NSConditionLock 条件锁5. NSRecursiveLock 递归锁6. pthread_mutex 互斥锁（C语言）7. dispatch_semaphore 信号量实现加锁（GCD）...]]></description><category></category></item><item><title><![CDATA[iOS 最新判断机型设备方法]]></title><link>https://blog.youkuaiyun.com/baikan6930/article/details/101693157</link><guid>https://blog.youkuaiyun.com/baikan6930/article/details/101693157</guid><author>baikan6930</author><pubDate>Mon, 07 Jan 2019 16:44:00 +0800</pubDate><description><![CDATA[#define isIphoneXXS [UIScreen mainScreen].bounds.size.width == 375 &amp;&amp; [UIScreen mainScreen].bounds.size.height == 812

#define isIPhone5 [UIScreen mainScreen].bounds.size.width == 3...]]></description><category></category></item><item><title><![CDATA[ios 11 12以后下拉刷新不回位的解决方法]]></title><link>https://blog.youkuaiyun.com/baikan6930/article/details/101693153</link><guid>https://blog.youkuaiyun.com/baikan6930/article/details/101693153</guid><author>baikan6930</author><pubDate>Mon, 07 Jan 2019 16:26:00 +0800</pubDate><description><![CDATA[原因: iOS11弃用了automaticallyAdjustsScrollViewInsets属性，新增contentInsetAdjustmentBehavior来替代它



//解决方案添加如下代码，建议在viewDidLoad添加

  if (@available(iOS 11.0, *)) {
    //ios 11以上...]]></description><category></category></item><item><title><![CDATA[iOS 画圆图片的几种方法]]></title><link>https://blog.youkuaiyun.com/baikan6930/article/details/101693152</link><guid>https://blog.youkuaiyun.com/baikan6930/article/details/101693152</guid><author>baikan6930</author><pubDate>Wed, 26 Dec 2018 10:13:00 +0800</pubDate><description><![CDATA[方法一：

self.cycleImv= [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 50, 50)];
[self.view addSubview:self.cycleImv];
// 为图片切圆
self.cycleImv.layer.masksToBounds = YES;
self.cycleImv...]]></description><category></category></item><item><title><![CDATA[ios   UITableView顶部向下偏移]]></title><link>https://blog.youkuaiyun.com/baikan6930/article/details/101693150</link><guid>https://blog.youkuaiyun.com/baikan6930/article/details/101693150</guid><author>baikan6930</author><pubDate>Mon, 24 Dec 2018 14:26:00 +0800</pubDate><description><![CDATA[//设置向下偏移20[self.tableView setContentInset:UIEdgeInsetsMake(20,0,0,0)];

转载于:https://www.cnblogs.com/soulDn/p/10168420.html]]></description><category></category></item><item><title><![CDATA[ios has denied the launch request.]]></title><link>https://blog.youkuaiyun.com/baikan6930/article/details/101693149</link><guid>https://blog.youkuaiyun.com/baikan6930/article/details/101693149</guid><author>baikan6930</author><pubDate>Fri, 21 Dec 2018 14:13:00 +0800</pubDate><description><![CDATA[ios has denied the launch request.

You can choose either of the two ways.
Solution 1:
Open System Preferences -&gt; Users &amp; Groups -&gt; Add a user account (build with new user is s...]]></description><category></category></item><item><title><![CDATA[git 常用命令大全]]></title><link>https://blog.youkuaiyun.com/baikan6930/article/details/101693148</link><guid>https://blog.youkuaiyun.com/baikan6930/article/details/101693148</guid><author>baikan6930</author><pubDate>Fri, 14 Dec 2018 17:44:00 +0800</pubDate><description><![CDATA[Git常用操作命令：
1)远程仓库相关命令
检出仓库：$ git clone git://github.com/jquery/jquery.git
查看远程仓库：$ git remote -v
添加远程仓库：$ git remote add [name] [url]
删除远程仓库：$ git remote rm [name]
修改远程仓库：$ git remote set-...]]></description><category></category></item><item><title><![CDATA[iOS  UITextView placeHolder占位文字的N种方法实现方法]]></title><link>https://blog.youkuaiyun.com/baikan6930/article/details/101693146</link><guid>https://blog.youkuaiyun.com/baikan6930/article/details/101693146</guid><author>baikan6930</author><pubDate>Tue, 27 Nov 2018 15:18:00 +0800</pubDate><description><![CDATA[方法一
1.把UITextView的text属性当成“placeholder”使用。
2.在开始编辑的代理方法里清除“placeholder”。
3.在结束编辑的代理方法里根据条件设置“placeholder”。
特点：这种方法的特点是，当用户点击了textView，placeholder占位文字就会立马消失，官方的placeholder是当系统监听到用户输入了文字后plac...]]></description><category></category></item><item><title><![CDATA[ios自定义日期、时间、城市选择器]]></title><link>https://blog.youkuaiyun.com/baikan6930/article/details/101693145</link><guid>https://blog.youkuaiyun.com/baikan6930/article/details/101693145</guid><author>baikan6930</author><pubDate>Fri, 16 Nov 2018 09:21:00 +0800</pubDate><description><![CDATA[选择器，我想大家都不陌生，当需要用户去选择某些范围值内的一个固定值时，我们会采用选择器的方式。选择器可以直观的提示用户选择的值范围、统一信息的填写格式，同时也方便用户快速的进行选择，比如对于性别，正常情况下就只有男女两种情况，那这时候用一个选择器给用户进行选择的话，可以避免错误数据的输入，也更方便用户去填写。再比如需要获取用户的生日信息时，采用选择器的方式可以统一生日的格式，如果让用户自...]]></description><category></category></item><item><title><![CDATA[ios  开发最新屏幕适配]]></title><link>https://blog.youkuaiyun.com/baikan6930/article/details/101693141</link><guid>https://blog.youkuaiyun.com/baikan6930/article/details/101693141</guid><author>baikan6930</author><pubDate>Wed, 17 Oct 2018 17:40:00 +0800</pubDate><description><![CDATA[转载于:https://www.cnblogs.com/soulDn/p/9805661.html]]></description><category></category></item><item><title><![CDATA[ios uilabel  根据文字 计算宽度 高度]]></title><link>https://blog.youkuaiyun.com/baikan6930/article/details/101693139</link><guid>https://blog.youkuaiyun.com/baikan6930/article/details/101693139</guid><author>baikan6930</author><pubDate>Tue, 16 Oct 2018 10:37:00 +0800</pubDate><description><![CDATA[//根据宽度求高度



+ (CGFloat)getLabelHeightWithText:(NSString *)text width:(CGFloat)width font: (CGFloat)font { CGRect rect = [text boundingRectWithSize:CGSizeMake(width, MAXFLOAT) options:NSS...]]></description><category></category></item></channel></rss>