<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[u012109585的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/u012109585</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u012109585]]></copyright><item><title><![CDATA[Flutter 透明渐变 AppBar]]></title><link>https://blog.youkuaiyun.com/u012109585/article/details/108127209</link><guid>https://blog.youkuaiyun.com/u012109585/article/details/108127209</guid><author>u012109585</author><pubDate>Thu, 20 Aug 2020 16:50:12 +0800</pubDate><description><![CDATA[最近要用 Flutter 重构一个 Native 页面，效果如下：

随着页面滑动，圆形按钮逐渐消失，返回按钮逐渐呈现，同时AppBar的透明度在整个过程中，是随着滑动距离线性变化的，而按钮的变化分为两段：圆形按钮逐渐消失，返回按钮逐渐呈现，整个过程可逆。
接下来介绍实现过程。
1.整体结构设计
通过观察可知，listView 可以在 AppBar 底部滑动，常规的 Scaffold widget 无法满足这个需求，而 Stack widget 可以实现组件的叠加，在这里通过 Stack 作为页面的 roo]]></description><category></category></item><item><title><![CDATA[如何精确计算文本所占的行数]]></title><link>https://blog.youkuaiyun.com/u012109585/article/details/106936037</link><guid>https://blog.youkuaiyun.com/u012109585/article/details/106936037</guid><author>u012109585</author><pubDate>Tue, 23 Jun 2020 12:34:00 +0800</pubDate><description><![CDATA[如何精确计算文本所占的行数
在 iOS 开发过程中，需要计算一段文字所占的行数，试了几种方式都很难准确计算。
通过coreText 框架，去精确计算一段文本所占的行数。
- (NSArray *)getLinesArrayOfStringInLabel:(NSString *)string font:(UIFont *)font andLableWidth:(CGFloat)lableW...]]></description><category></category></item><item><title><![CDATA[Waiting for another flutter command to release the startup lock...]]></title><link>https://blog.youkuaiyun.com/u012109585/article/details/106824628</link><guid>https://blog.youkuaiyun.com/u012109585/article/details/106824628</guid><author>u012109585</author><pubDate>Thu, 18 Jun 2020 10:16:02 +0800</pubDate><description><![CDATA[遇到这个问题，随手百度一下大概率会得到以下答案：

进入到flutter sdk目录中，然后找到bin/cache/lockfile文件，删除它即可。
删除之后再运行flutter packages get就已经解决了。

根据提示的字面意思，猜测是Dart 进程开启的过多，其中有Dart 进程未释放 startup lock
资源。
此时只需要打开任务管理器或者 Mac的活动监视器，搜索 dart，关闭所有dart进程即可。
并不需要删除任何文件。

发自 CNBlog 

...]]></description><category></category></item><item><title><![CDATA[iOS 支付宝支付 微信支付SDK接口不统一？ 盘他！]]></title><link>https://blog.youkuaiyun.com/u012109585/article/details/102489320</link><guid>https://blog.youkuaiyun.com/u012109585/article/details/102489320</guid><author>u012109585</author><pubDate>Thu, 10 Oct 2019 19:41:21 +0800</pubDate><description><![CDATA[  开发过支付宝、微信支付的同学都知道，微信的支付 API 设计感觉是 Java 开发工程师写的，远不如支付宝 SDK 的接口设计用起来顺手。在这里，统一封装微信支付和支付宝支付的API，使两种支付方式对外提供一致的调用接口。
   首先我们来看支付宝支付SDK的API是怎么设计的：
/**
 *  支付接口
 *
 *  @param orderStr        支付订单信息字串
 *  @...]]></description><category></category></item><item><title><![CDATA[支付宝支付 微信支付SDK接口不统一？ 盘他！]]></title><link>https://blog.youkuaiyun.com/u012109585/article/details/102850431</link><guid>https://blog.youkuaiyun.com/u012109585/article/details/102850431</guid><author>u012109585</author><pubDate>Thu, 10 Oct 2019 19:40:00 +0800</pubDate><description><![CDATA[  开发过支付宝、微信支付的同学都知道，微信的支付 API 设计感觉是 Java 开发工程师写的，远不如支付宝 SDK 的接口设计用起来顺手。在这里，统一封装微信支付和支付宝支付的API，使两种支付方式对外提供一致的调用接口。
   首先我们来看支付宝支付SDK的API是怎么设计的：
/**
 *  支付接口
 *
 *  @param orderStr        支付订单信息字串
...]]></description><category></category></item><item><title><![CDATA[How do I fix "selector not recognized" runtime exception]]></title><link>https://blog.youkuaiyun.com/u012109585/article/details/101374230</link><guid>https://blog.youkuaiyun.com/u012109585/article/details/101374230</guid><author>u012109585</author><pubDate>Wed, 25 Sep 2019 17:10:52 +0800</pubDate><description><![CDATA[Q:  How do I fix “selector not recognized” runtime exceptions when trying to use category methods from a static library?

如何解决 在 runtime 环境中尝试调用静态库中分类的方法时，报 “selector not recognized” 异常？
  今天在浏览 YYKi...]]></description><category></category></item><item><title><![CDATA[Building Objective-C static libraries with categories]]></title><link>https://blog.youkuaiyun.com/u012109585/article/details/101409220</link><guid>https://blog.youkuaiyun.com/u012109585/article/details/101409220</guid><author>u012109585</author><pubDate>Wed, 25 Sep 2019 17:05:00 +0800</pubDate><description><![CDATA[Q: How do I fix "selector not recognized" runtime exceptions when trying to use category methods from a static library?

如何解决 在 runtime 环境中尝试调用静态库中分类的方法时，报 "selector not recognized" 异常？
  今天在浏览 ...]]></description><category></category></item><item><title><![CDATA[iOS 工程由shell脚本配置一套代码生成多个APP]]></title><link>https://blog.youkuaiyun.com/u012109585/article/details/101195385</link><guid>https://blog.youkuaiyun.com/u012109585/article/details/101195385</guid><author>u012109585</author><pubDate>Mon, 23 Sep 2019 10:19:59 +0800</pubDate><description><![CDATA[  APP开发过程中，往往需要在多个网络环境或配置中进行切换，以获取不同配置的APP，甚至有时需要用一套代码经过简单的配置生成不同的APP。而手动配置费时费力，且容易出错。这里介绍用脚本工具，去生成不同配置的APP工程。

1. 需求分析
在配置工程中我们需要事先知道有哪些配置项：
&nbsp;&nbsp;
&nbsp;1. APP 启动图、图标等资源文件。 &nbsp;
&nbsp;2. APP...]]></description><category></category></item><item><title><![CDATA[电商 APP 下单页（俗称车2） 业务流程概要设计]]></title><link>https://blog.youkuaiyun.com/u012109585/article/details/88845956</link><guid>https://blog.youkuaiyun.com/u012109585/article/details/88845956</guid><author>u012109585</author><pubDate>Wed, 27 Mar 2019 10:15:00 +0800</pubDate><description><![CDATA[电商 APP 下单页（俗称车2） 业务流程概要设计
		
		
		
			购物车是电商APP的一个关键功能点，一般购物车包含 3 个页面，分别是：

1.购物车的商品列表页
2.商品下单页
3.订单付款页面
4.订单付款成功页面

由于现有购物车逻辑相对混乱，这里重新整理一下商品下单页的业务流程设计
1.生成订单
这里在业务层面把订单的生命周期划分为4个阶段，分别是：
...]]></description><category></category></item><item><title><![CDATA[创建 个人 pod]]></title><link>https://blog.youkuaiyun.com/u012109585/article/details/88791580</link><guid>https://blog.youkuaiyun.com/u012109585/article/details/88791580</guid><author>u012109585</author><pubDate>Fri, 22 Mar 2019 11:43:00 +0800</pubDate><description><![CDATA[创建 个人 pod
		
		创建一个自己的 pod 大致需要以下步骤

创建git repository
编辑.podspec
创建LICENSE(许可证/授权)文件
标记 tag
验证
注册CocoaPods
发布
搜索验证

1.代码提交到github平台
在 git 平台创建自己的 repository，例如 ‘AGNetworking’
...]]></description><category></category></item><item><title><![CDATA[iOS 数据安全、数据加密传输]]></title><link>https://blog.youkuaiyun.com/u012109585/article/details/87837731</link><guid>https://blog.youkuaiyun.com/u012109585/article/details/87837731</guid><author>u012109585</author><pubDate>Wed, 20 Feb 2019 16:23:00 +0800</pubDate><description><![CDATA[
		
			iOS 数据安全、数据加密传输
		
		近期接到一个新需求：APP企业版需要接入热更新功能。
热更新需要下发补丁脚本， 脚本下发过程中需要保证脚本传输安全，且需要避免中间人攻击。
需要用到数据加密传输方面的知识，以下是我设计的加密解密流程：
　　0. 将脚本 base64 编码，得到编码后的文本 encodedScript；
 　　1. 将 encodedScript 使用...]]></description><category></category></item><item><title><![CDATA[GCD 多线程技术]]></title><link>https://blog.youkuaiyun.com/u012109585/article/details/87837744</link><guid>https://blog.youkuaiyun.com/u012109585/article/details/87837744</guid><author>u012109585</author><pubDate>Mon, 17 Sep 2018 18:02:00 +0800</pubDate><description><![CDATA[
		
			GCD 多线程技术
		
		 Grand Central Dispatch（GCD）是异步执行任务的技术之一。一般将应用程序中记述的线程管理用
的代码在系统级中实现。开发者只需要定义想执行的任务并追加到适当的Dispatch Queue中，DCD就能生成
必要的线程并计划执行任务。由于线程管理是作为系统的一部分来实现的，因此可以统一管理，也可以执行任务，
这样就比以前的线程...]]></description><category></category></item><item><title><![CDATA[获取 iOS APP 内存占用的大小]]></title><link>https://blog.youkuaiyun.com/u012109585/article/details/87837742</link><guid>https://blog.youkuaiyun.com/u012109585/article/details/87837742</guid><author>u012109585</author><pubDate>Mon, 17 Sep 2018 14:26:00 +0800</pubDate><description><![CDATA[
		
			获取 iOS APP 内存占用的大小
		
		当我们想去获取 iOS 应用的占用内存时，通常我们能找到的方法是这样的，用 resident_size：
 


#import &amp;lt;mach/mach.h&amp;gt;
- (int64_t)memoryUsage {
    int64_t memoryUsageInByte = 0;
    struct task_basi...]]></description><category></category></item><item><title><![CDATA[使用 runtime 实现字符串转方法，并传递参数]]></title><link>https://blog.youkuaiyun.com/u012109585/article/details/87837735</link><guid>https://blog.youkuaiyun.com/u012109585/article/details/87837735</guid><author>u012109585</author><pubDate>Mon, 17 Sep 2018 13:51:00 +0800</pubDate><description><![CDATA[
		
			使用 runtime 实现字符串转方法，并传递参数
		
		利用runtime的动态机制实现字符串转方法并传递参数
使用 SEL 关键字引用方法声明，使用 methodForSelector 寻找方法实现，
使用函数指针调用方法。

 1 - (void)actionResponse:(NSString *)action withObject:(id)argument {
...]]></description><category></category></item><item><title><![CDATA[OC字符串处理]]></title><link>https://blog.youkuaiyun.com/u012109585/article/details/87837728</link><guid>https://blog.youkuaiyun.com/u012109585/article/details/87837728</guid><author>u012109585</author><pubDate>Mon, 17 Sep 2018 13:43:00 +0800</pubDate><description><![CDATA[
		
			OC字符串处理
		
		接到一个需求， 现有多个品牌的商品，使用字符串保存已选中的品牌，使用','隔开，可以反选。
 
分析问题可知：
1. 字符串由多个品牌名字组成，由 ',' 隔开。
2.如果选中的品牌不在字符串内，则拼接到字符串。
3.如果选中的品牌在字符串内，移除这个品牌。
子字符串在字符串内的位置有 3 种情况：
在1.头部 2.在内部 3.在尾部，如果子字符 在...]]></description><category></category></item><item><title><![CDATA[用 map 表达互斥逻辑]]></title><link>https://blog.youkuaiyun.com/u012109585/article/details/87837723</link><guid>https://blog.youkuaiyun.com/u012109585/article/details/87837723</guid><author>u012109585</author><pubDate>Mon, 17 Sep 2018 13:10:00 +0800</pubDate><description><![CDATA[
		
			用 map 表达互斥逻辑
		
		在这个开发周期遇到这样一个需求：
管理员可以给子账号配置权限，有些权限存在互斥不可同时勾选，比如
审核员和代采、审核和采购员不可同时勾选
 
之前同事实现的方式如下：
这样每添加一个互斥关系就要遍历一次，低效且代码繁琐。

   // 审核员和代采、审核和采购员不可同时勾选
    if ([tag isEqualToString:@&quot;审核...]]></description><category></category></item><item><title><![CDATA[iOS之LLDB调试器]]></title><link>https://blog.youkuaiyun.com/u012109585/article/details/87837736</link><guid>https://blog.youkuaiyun.com/u012109585/article/details/87837736</guid><author>u012109585</author><pubDate>Mon, 17 Sep 2018 12:57:00 +0800</pubDate><description><![CDATA[
		
			iOS之LLDB调试器
		
		LLDB被定位为下一代的高性能调试器，默认内置于Xcode IDE内，
支持在PC、iOS设备以及模拟器上调试C、Objective-C和C++。
关于LLDB的官方介绍：LLDB
常用命令：
1. po 打印对象的 description 信息, 或者直接在调试窗口打印一个基本类型变量的值

 
2. expr  是expression的简...]]></description><category></category></item><item><title><![CDATA[iOS 线程安全 锁]]></title><link>https://blog.youkuaiyun.com/u012109585/article/details/108663554</link><guid>https://blog.youkuaiyun.com/u012109585/article/details/108663554</guid><author>u012109585</author><pubDate>Thu, 01 Mar 2018 11:55:00 +0800</pubDate><description><![CDATA[简介：
操作系统在进行多线程调度的时候，为了保证多线程安全引入了锁的机制，以实现指定代码或资源在某时间内只可以被有限个线程访问。这里主要介绍iOS开发中，使用Objective-C开发所用到的几种锁的用法。
1 iOS开发中常用的几种锁
1.1 OSSpinLock 自旋锁
1.2 pthread_mutex
1.3 pthre...]]></description><category></category></item><item><title><![CDATA[iOS 线程安全]]></title><link>https://blog.youkuaiyun.com/u012109585/article/details/87837741</link><guid>https://blog.youkuaiyun.com/u012109585/article/details/87837741</guid><author>u012109585</author><pubDate>Thu, 01 Mar 2018 11:55:00 +0800</pubDate><description><![CDATA[
		
			iOS 线程安全
		
		简介：
  操作系统在进行多线程调度的时候，为了保证多线程安全引入了锁的机制，以实现指定代码或资源在某时间内只可以被有限个线程访问。这里主要介绍iOS开发中，使用Objective-C开发所用到的几种锁的用法。
 
1      iOS开发中常用的几种锁
1.1       OSSpinLock 自旋锁
1.2       pthread_mute...]]></description><category></category></item><item><title><![CDATA[OC实现 单向链表]]></title><link>https://blog.youkuaiyun.com/u012109585/article/details/87837727</link><guid>https://blog.youkuaiyun.com/u012109585/article/details/87837727</guid><author>u012109585</author><pubDate>Tue, 27 Feb 2018 14:26:00 +0800</pubDate><description><![CDATA[
		
			OC实现 单向链表
		
		需要实现一个消息队列，队列具有 FIFO 特点，即先入先出，在这里采用单向链表实现队列逻辑。
本次要实现的队列要求：
1. 节点可以存放任意类型数据
2. 线程安全
 
简单说明一下：
1. 创建CFNode类，用作节点，其data属性和next属性都是 atomic，即只能单线程访问属性。
2. 创建CFList类，用以push节点和pop节点...]]></description><category></category></item></channel></rss>