首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
梦即是幻
掘友等级
iOS工程师
|
Hello World
Swift
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
6
文章 6
沸点 0
赞
6
返回
|
搜索文章
最新
热门
一个map家族常用场景吹一波Swift
首先,想省去return,但中间又会有各种转换,那就用链式调用方式呗。 然后我这里想使用URLComponents的queryItems来省去自己拆分参数的烦恼。。 使用URLComponents(string:),而不是URLComponents(url:, resolvin…
支持四个方向的刷新控件
很久以前接到过一个需求,类似淘宝商品详情页,当商品图片左滑到尽头后需要做一些特定展示。 基本和下拉刷新基本一样,不过是左拉刷新。。 正好当时有时间,所以就想干脆写个支持上下左右拉刷新的控件吧,于是就参考MJRefresh,撸了个OC版的。
NetworkExtension4-Server开发
完整代码在此,熟悉的小伙伴可以直接试试。 可以看到,核心方法就是starServer了。 大概意思就是开启一个端口8899的服务器,并设置回调,将收到的字符串添加到items数组,刷新UI。 对外提供开启服务器和设置数据监听的api。 简单起见,这里直接使用recvfrom循环…
NetworkExtension3-Tunnel开发
完整代码在此,熟悉的小伙伴可以直接试试。 主App已经OK,下面就来看看Network Extension中的流程。 startTunnel(options:,completionHandler:)方法:启动网络隧道,当主App调用startVPNTunnel()后执行;最后通…
NetworkExtension2-Client开发
完整代码在此,熟悉的小伙伴可以直接试试。 第一步,先来搞定主App相关界面和功能。 一个单独的静态库,封装了管理VPN相关的逻辑,方便多个Target复用,核心方法都封装在YYVPNManager里。 要拦截流量,需要主App启动Network Extension进程,这通过调…
移动研发平台简单设计方案
组件层:业务无关,除基础组件外,每个组件只提供一个独立的功能,供上层使用。 模块层:同一功能/业务相关的代码封装成独立的模块,依赖组件层,模块间通过URL和接口交互。 应用层:使用CocoaPods管理需要的组件、模块,通过URLRouter统一调度业务模块。 每个组件或模块都…
全局统一的定时器
虽然有其他方案可以解决使用系统Timer的各种问题,不过对于同时有多个定时器,且需要统一时间的场景,也是比较麻烦。 所以YYGlobalTimer应运而生。。。
Swift版xx上网工具
于是找了下资料,写了个自己用,界面简单易用,感觉还不错。 这个就不做多于的讲解和介绍了。。。大家自己看源码吧
协议化的简单Router
JMRouter.setup方法内部会调用registerPathMap,遍历主工程中所有类,判断是否实现JMRoutable协议来自动注册映射关系,可能会有点耗时。根据我们自己项目测试来看,大概几W个类,1秒内完成,所有看情况这步可以优化。。
App架构相关经验体悟
本文旨在总结一些在不对现有项目结构做出重大调整的情况下,逐步改善代码质量及可维护性的方式。 将应用程序的各种功能和系统按其职责和关注点明确区分。 我们发明各种架构模式,技术和原理的最终目的都是为了引导我们编写更清晰解耦,易于维护的代码。 视图控制器大量增长的问题在于它们有太多的…
下一页
个人成就
文章被点赞
13
文章被阅读
17,147
掘力值
314
关注了
42
关注者
15
收藏集
1
关注标签
2
加入于
2019-01-16