<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[iOSjack的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/iOSjack</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; iOSjack]]></copyright><item><title><![CDATA[2020年了，跨平台开发框架现在怎样了？]]></title><link>https://blog.youkuaiyun.com/iOSjack/article/details/111214568</link><guid>https://blog.youkuaiyun.com/iOSjack/article/details/111214568</guid><author>iOSjack</author><pubDate>Tue, 15 Dec 2020 14:58:18 +0800</pubDate><description><![CDATA[转载请注明出处：葡萄城官网，葡萄城为开发者提供专业的开发工具、解决方案和服务，赋能开发者。
原文出处：https://dzone.com/articles/cross-platform-mobile-development-2020-trends-and

多年来，跨平台移动开发已经获得了最流行软件开发趋势之一的声誉。这并不令人意外，因为采用跨平台开发技术使得软件工程师使用同一代码就能为不同平台构建应用程序，从而节省时间、金钱以及不必要的工作。
移动市场的现状
截至2019年12月，全球活跃网民已超45亿.]]></description><category></category></item><item><title><![CDATA[iOS开发之widget实现]]></title><link>https://blog.youkuaiyun.com/iOSjack/article/details/111212639</link><guid>https://blog.youkuaiyun.com/iOSjack/article/details/111212639</guid><author>iOSjack</author><pubDate>Tue, 15 Dec 2020 14:39:55 +0800</pubDate><description><![CDATA[前言
原文:Allence 链接:https://www.cnblogs.com/allencelee/p/widegt.html
iOS extension的出现，方便了用户查看应用的服务，比如用户可以在Today的widgets中查看应用的简略信息，然后点击进入相关的应用界面。
暂且不表网络上现有的widget文章，本篇文章主要说明本人具体实现widget的步骤，希望能够帮助到需要实现widget的同行朋友。


文章将依次从以下几个问题着手，进行详细说明：
1、如何为现有的工程添加widget；
2、]]></description><category></category></item><item><title><![CDATA[flutter中的状态管理Provider]]></title><link>https://blog.youkuaiyun.com/iOSjack/article/details/111210594</link><guid>https://blog.youkuaiyun.com/iOSjack/article/details/111210594</guid><author>iOSjack</author><pubDate>Tue, 15 Dec 2020 14:21:51 +0800</pubDate><description><![CDATA[今天简单说一下flutter中的状态管理，我们这次使用provider；
ps：先说一个概念，Model，模型，这里面定义了我们准备全局使用的数据，或者方法；
举个栗子：我们有一个User类，用来储存用户的信息，比如登录之后，我们会拿到用户的一些个人数据，那么这些数据就可以作为属性写在Model里，同时我们在User内部，还会提供一个upUser方法，用来更新用户信息，那么这个方法也可以写在Model中，OK，以上就是我们准备的User Model;
下面是正题，go，go，go

作为一个ios开发者，遇]]></description><category></category></item><item><title><![CDATA[iOS OC动态运行时(runtime)~动态特性表现]]></title><link>https://blog.youkuaiyun.com/iOSjack/article/details/111086547</link><guid>https://blog.youkuaiyun.com/iOSjack/article/details/111086547</guid><author>iOSjack</author><pubDate>Sat, 12 Dec 2020 22:52:28 +0800</pubDate><description><![CDATA[一、概念:

因为运行时 runtime 是 必须到运行时(run time)才会做一些事情;
所以OC的动态特性表现为了三个方面：动态类型、动态绑定、动态加载;
动态：主要是将数据类型的确定由编译时，推迟到了运行时。之所以叫做动态，

二、iOS OC动态运行时~动态类型

1.动态类型,就是id类型。
2.动态类型是跟静态类型相对的。像内置的明确的基本类型都属于静态类型(int、NSString等)。
3.静态类型 在编译的时候就能被识别出来。所以，若程序发生了类型不对应，编译器就会发出警告。
4.动态]]></description><category></category></item><item><title><![CDATA[如何使用VIPER构建iOS应用]]></title><link>https://blog.youkuaiyun.com/iOSjack/article/details/111069471</link><guid>https://blog.youkuaiyun.com/iOSjack/article/details/111069471</guid><author>iOSjack</author><pubDate>Sat, 12 Dec 2020 16:28:27 +0800</pubDate><description><![CDATA[用VIPER构建iOS应用
为避免撕逼，提前声明：本文纯属翻译，仅仅是为了学习，加上水平有限，见谅！
【原文】https://www.objc.io/issues/13-architecture/singletons/
用VIPER构建iOS应用 ——by&nbsp;Jeff Gilbert&nbsp;and&nbsp;Conrad Stoll
众所周知，在建筑领域，我们塑造我们的建筑，随后我们的建筑也塑造我们。正如程序员最终知道那样，这也适用于构建软件。
设计我们的代码很重要，这样每一个片段都很容易识别，]]></description><category></category></item><item><title><![CDATA[大专程序员能在iOS开发一直干下去吗？]]></title><link>https://blog.youkuaiyun.com/iOSjack/article/details/111063835</link><guid>https://blog.youkuaiyun.com/iOSjack/article/details/111063835</guid><author>iOSjack</author><pubDate>Sat, 12 Dec 2020 15:45:13 +0800</pubDate><description><![CDATA[劳心者治人 劳力者治于人]]></description><category></category></item><item><title><![CDATA[如何用iOS14 Widget小组件自定义玩法]]></title><link>https://blog.youkuaiyun.com/iOSjack/article/details/111051607</link><guid>https://blog.youkuaiyun.com/iOSjack/article/details/111051607</guid><author>iOSjack</author><pubDate>Fri, 11 Dec 2020 18:57:08 +0800</pubDate><description><![CDATA[一.了解Widget
iOS14带来了新的UI组件：WidgetKit，人称小组件（用过安卓的都能理解），这货的前身其实就是iOS10时候引入的Today Extension。
Widget为应用程序提供了这样一种功能：其可以让用户在主屏幕上展示App中用户所关心的信息。例如一款天气软件，其可以附带一个Widget让用户在主屏幕就可查看今日的天气情况，例如股票相关的软件，用户将自己感兴趣的股票收藏，无需打开App，在主屏幕即可查到对应的股价信息。
刚好iOS14正式版更新的节奏，抽点时间来试试整一个Widg]]></description><category></category></item><item><title><![CDATA[iOS绘制仪表盘，游标沿圆形轨迹移动动画]]></title><link>https://blog.youkuaiyun.com/iOSjack/article/details/111032961</link><guid>https://blog.youkuaiyun.com/iOSjack/article/details/111032961</guid><author>iOSjack</author><pubDate>Fri, 11 Dec 2020 12:33:12 +0800</pubDate><description><![CDATA[最近碰到一个需求，需要画一个仪表盘的页面。图上所示。
计算角度
圆弧部分还好，用CAShapeLayer+UIBezierPath曲线，只要确定好圆心部分和左右两边的角度就行。这里正好说明一下
- (void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise API_AVAILA.]]></description><category></category></item><item><title><![CDATA[iOS动画开发-Lottie动画实战]]></title><link>https://blog.youkuaiyun.com/iOSjack/article/details/111032882</link><guid>https://blog.youkuaiyun.com/iOSjack/article/details/111032882</guid><author>iOSjack</author><pubDate>Fri, 11 Dec 2020 12:21:34 +0800</pubDate><description><![CDATA[介绍
如果你还不知道Lottie是什么, 那你真的out了.
如果把iOS动画分为两类: 交互式动画, 播放式动画, 那么其中的播放动画完全可以使用Lottie来完成, 例如:

作为收藏按钮, 是不是很活泼?

返回与菜单之间的切换, 生动有趣!

还有各种形变动画.
这里先放上Lottie的地址: github.com/airbnb/lott…
更棒的是, Lottie有各种不同的版本, 安卓, iOS, 前端都可以使用, 理论上动画做一套就可以共用, 大大的减少了工作量.
使用方法

集成环境: 移动]]></description><category></category></item><item><title><![CDATA[iOS开发-Dart对比Swift]]></title><link>https://blog.youkuaiyun.com/iOSjack/article/details/110951607</link><guid>https://blog.youkuaiyun.com/iOSjack/article/details/110951607</guid><author>iOSjack</author><pubDate>Thu, 10 Dec 2020 13:56:45 +0800</pubDate><description><![CDATA[| 作者：Andrea Bizzotto
| 原文链接：medium.com/coding-with…
Dart 和 Swift 是我最喜欢的编程语言。我在商业和开源代码中广泛使用它们。
本文提供了 Dart 和 Swift 之间的比较，旨在：

突出显示两者之间的差异；
作为开发人员从一种语言转移到另一种语言（或使用两者）的参考。

一些背景：

Dart 支持 Flutter，这是 Google 用于从单一代码库构建漂亮的本机应用程序的框架。
Swift 通过 iOS，macOS，tvOS 和 watc]]></description><category></category></item><item><title><![CDATA[iOS开发-Dart vs Swift]]></title><link>https://blog.youkuaiyun.com/iOSjack/article/details/110951552</link><guid>https://blog.youkuaiyun.com/iOSjack/article/details/110951552</guid><author>iOSjack</author><pubDate>Thu, 10 Dec 2020 13:54:07 +0800</pubDate><description><![CDATA[| 作者：Andrea Bizzotto
| 原文链接：medium.com/coding-with…
Dart 和 Swift 是我最喜欢的编程语言。我在商业和开源代码中广泛使用它们。
本文提供了 Dart 和 Swift 之间的比较，旨在：

突出显示两者之间的差异；
作为开发人员从一种语言转移到另一种语言（或使用两者）的参考。

一些背景：

Dart 支持 Flutter，这是 Google 用于从单一代码库构建漂亮的本机应用程序的框架。
Swift 通过 iOS，macOS，tvOS 和 watc]]></description><category></category></item><item><title><![CDATA[iOS开发-Class详解]]></title><link>https://blog.youkuaiyun.com/iOSjack/article/details/110951275</link><guid>https://blog.youkuaiyun.com/iOSjack/article/details/110951275</guid><author>iOSjack</author><pubDate>Thu, 10 Dec 2020 13:41:55 +0800</pubDate><description><![CDATA[前言:iOS的开发语言objective-c，它的真实面目是它不是真正的面向对象语言，而抽象理解为此而已。其实它就是C+，有个公式可以很好地诠释那就是
OC = C + Runtime; 接下来我们就好好讲讲在Runtime下的objc-class。准备资料,objc4-646/runtime。

一:Class定义
1.1 小小说明一下objc-api.h里的OBJC_ISA_AVAILABILITY:
/*介绍一下__attribute__((deprecated))的作用,__attribute是给.]]></description><category></category></item><item><title><![CDATA[iOS开发-Dynamic Swift]]></title><link>https://blog.youkuaiyun.com/iOSjack/article/details/110942975</link><guid>https://blog.youkuaiyun.com/iOSjack/article/details/110942975</guid><author>iOSjack</author><pubDate>Wed, 09 Dec 2020 23:05:59 +0800</pubDate><description><![CDATA[Dynamic Swift

众所周知，Swift 是一门静态语言，所有属性在编译期就已经确定下来了，对方法的派发是是静态完成的，类似于 C++ 的 vtable ，这样可以大幅提升 Swift 的性能，据统计，Swift 静态派发的的速度大约耗时为 1.1 纳秒，而 ObjC 的动态派发耗时为 4.9 纳秒，Swift 快大约 5 倍的时间，所以 Swift 性能比 ObjC 好，也就是因为 Swift 做了很多静态优化。
我们都知道，ObjC 跟 Swift 相反，ObjC 是动态语言，所有方法、属性都]]></description><category></category></item><item><title><![CDATA[iOS 进阶：Awesome - Runtime]]></title><link>https://blog.youkuaiyun.com/iOSjack/article/details/110940815</link><guid>https://blog.youkuaiyun.com/iOSjack/article/details/110940815</guid><author>iOSjack</author><pubDate>Wed, 09 Dec 2020 21:23:31 +0800</pubDate><description><![CDATA[Github开源地址，一步一步教你怎么使用

一、概述

经过多年的发展，美柚iOS项目代码已经达到40W行+的规模，所使用的 Pod 库的数量达到了110+，App Store 安装包210M+，在这么大的项目规模下（CI机器 MAC配置：3 GHz 8-Core Intel Xeon E5；时间：发布20min+），（开发机器iMac ：Retina 5K, 27-inch, 2017 融合硬盘；时间：build30min+）打包、编译问题逐步成为我们团队一个躲不过的痛，严重影响了我们的研发效率与其他.]]></description><category></category></item><item><title><![CDATA[iOS开发 - iOS14适配踩坑]]></title><link>https://blog.youkuaiyun.com/iOSjack/article/details/110939805</link><guid>https://blog.youkuaiyun.com/iOSjack/article/details/110939805</guid><author>iOSjack</author><pubDate>Wed, 09 Dec 2020 20:22:40 +0800</pubDate><description><![CDATA[1.UITableViewCell上控件不响应点击事件

iOS14中 UITableViewCell 如果子控件是加到cell上的会被 cell的contentView所遮挡，contentView会在最上层。

解决办法: 将子控件加到contentView上或者隐藏cell的contentView
// 如果修改的地方比较多的话 可以在基类cell中重写addSubview的方法
override func addSubview(_ view: UIView) {
    if view == con]]></description><category></category></item><item><title><![CDATA[iOS开发之iOS14用户广告标识符IDFA]]></title><link>https://blog.youkuaiyun.com/iOSjack/article/details/110939456</link><guid>https://blog.youkuaiyun.com/iOSjack/article/details/110939456</guid><author>iOSjack</author><pubDate>Wed, 09 Dec 2020 20:01:29 +0800</pubDate><description><![CDATA[IDFA
 IDFA 全称为 Identity for Advertisers ，即广告标识符。用来标记用户，目前最广泛的用途是用于投放广告、个性化推荐等。
 在 iOS13 及以前，系统会默认为用户开启允许追踪设置，我们可以简单的通过代码来获取到用户的 IDFA 标识符。
 iOS14 中，系统会默认为用户关闭广告追踪权限。
 对于这种情况，我们需要去请求用户权限。首先需要在 Info.plist 中配置" NSUserTrackingUsageDescription " 及描述文案，接着使用 A]]></description><category></category></item><item><title><![CDATA[Swift和Objective-C混编注意]]></title><link>https://blog.youkuaiyun.com/iOSjack/article/details/110939094</link><guid>https://blog.youkuaiyun.com/iOSjack/article/details/110939094</guid><author>iOSjack</author><pubDate>Wed, 09 Dec 2020 19:48:35 +0800</pubDate><description><![CDATA[前言
Swift已推出数年，与Objective-C相比Swift的语言机制及使用简易程度上更接地气，大大降低了iOS入门门槛。当然这对新入行的童鞋们来讲，的确算是福音，但对于整个iOS编程从业者来讲，真真是，曾几何时“高大上”，转瞬之间“矮矬穷”。再加上培训班横行，批量批发之下，iOS再也看不到当年的辉煌。
往事不再提，事还是要做滴。iOS10推出后，紧跟着Xcode8也推送了更新，细心者会发现，Xcode8下iOS版本最低适配已变为iOS8.0，加上Swift版本趋于稳定，从某种意义上讲，Swift的时]]></description><category></category></item><item><title><![CDATA[程序员如何避免“内卷化“]]></title><link>https://blog.youkuaiyun.com/iOSjack/article/details/110929558</link><guid>https://blog.youkuaiyun.com/iOSjack/article/details/110929558</guid><author>iOSjack</author><pubDate>Wed, 09 Dec 2020 16:49:41 +0800</pubDate><description><![CDATA[一、什么是内卷化
最近开始了解到一个很有意思的词——“内卷化”，如果你还不知道这个词，那就非常建议往下看。
什么是内卷化？内卷化，亦称过密化，最初由文化人类学家亚历山大·戈登威泽提出，用于描述社会文化模式的变迁规律。当一种文化模式进入到最终的固定状态时，便逐渐局限于自身内部不断进行复杂化的转变，从而再也无法转化为新的文化形态。在中国语境下，内卷化概念最初闻名自历史学家杜赞奇对于古代中国经济生活的研究成果中。杜赞奇借用内卷化一词描述清代人口爆炸，廉价劳动力过剩，从而无法带动技术革新，使得古代中国的经济形态长期]]></description><category></category></item><item><title><![CDATA[iOS14 YYImage无法正常显示图片]]></title><link>https://blog.youkuaiyun.com/iOSjack/article/details/110920922</link><guid>https://blog.youkuaiyun.com/iOSjack/article/details/110920922</guid><author>iOSjack</author><pubDate>Wed, 09 Dec 2020 13:41:23 +0800</pubDate><description><![CDATA[升级到iOS14，之前使用的YYimage框架全部不能正常显示图片
原因是：14.0 系统调用了下面方法，YYAnimatedImageView没有正确处理
*-(void)displayLayer:(CALayer )layer;
可以用以下方式处理：
方式一：
更改YYimage源码，在YYAnimationImageView.m中
- (void)displayLayer:(CALayer *)layer {
    if (_curFrame) {
        layer.contents = ]]></description><category></category></item></channel></rss>