- 博客(20)
- 资源 (26)
- 收藏
- 关注
原创 iOS 性能优化之教你使用Allocations分析内存分配
AllocationsAllocations用来分析静态内存分配。Demo项目Demo AppDemo是一个简单的图片应用:首页只有一个简单的入口;次级页面会读取本地图片,加滤镜,然后按照瀑布流的方式显示出来;第三个页面提供大图显示;运行代码:点击Photos -> 进入main -> 点击一张图,进入详情页 -> Pop直到回到第一个页面,重复这段操作,从X
2018-11-19 11:34:19 1141
原创 iOS 漫谈App瘦身
前段时间部门开需求会,砍掉了应用中的部分需求。这简直就是给应用瘦身的良机!这个时候测试又提出来:安卓端的app在应用市场的包只有26M,而iOS端的app在App Store上却有88M。会后,我就找来安卓的测试机,对比了百度、支付宝、微信、京东、新浪和抖音几个App在应用市场和App Store上的大小,数据如下:显而易见,相同的应用,安卓端的应用安装包远小于iOS端。究其原因,笔者虽也查...
2018-11-19 09:13:44 677
原创 iOS 性能优化之图片加载和处理
前言本文基于WWDC2018-Image and Graphics Best Practices,对图片加载和处理的思考和总结。本文不是WWDC翻译,如果需要了解视频内容可以点击上面的链接观看。正文图片的显示分为三步:加载、解码、渲染。通常,我们操作的只有加载,解码和渲染是由UIKit进行。什么是解码?以UIImageView为例。当其显示在屏幕上时,需要UIImage作为数据源。...
2018-11-08 11:01:39 1698
原创 适合初学者的IDEA使用教程
1、创建一个项目打开IDEA,若初次使用,我们需要创建一个项目如图所示:点击Create New Project 会出现这个界面,此时我们需要创建一个空白项目,如图所示:然后一直点击next,直到finish如图所示:接下来我们要配置jdk如图所示:如图所示,先选择SDKs,然后选择+号点击ok会出现如下界面:然后将你jdk的位置添加进来,点击ok即可。此时还有最后一个配置,...
2018-11-30 09:52:04 3654
原创 Mac 安装IDEA以及激活方法
首先需要下载IDEA,选择适合自己的版本,这里是安装Mac版本,后缀名是.dmg的文件,下载好后,在路径:访达->下载,可以看到下载好的文件。双击文件即可完成安装,安装过程中可能需要输入密码。如果软件图标没有出现在应用程序目录中,可以将文件拖拽到应用程序目录,方便以后访问软件。激活方法有多种,这里用的是补丁激活。可以进入http://idea.lanyus.com/下载补...
2018-11-29 16:27:30 22064
原创 MacOS系统 安装 JDK 并配置环境
第一步 : 下载 mac 版的 JDK下载地址// 同意协议并点击下载第二步 : 下载完成后, 按提示完成安装.打开Finder,可以在下图所示的路径中找到安装好的jdk:其中Contents下的Home文件夹,是该JDK的根目录其中:bin目录下存放JDK用于开发的一些终端命令工具。常见的工具如:“javac”的作用是将java源文件编译为class文件(即自解码文件);...
2018-11-29 15:27:59 801
原创 GitHub 寻宝指南
作为一个资深的程序员,GitHub 是我用过的最好工具,因为 Google 并非总是那么用。GitHub 是一个宝藏库,可没有藏宝图,GitHub 一1亿的仓库也和你没有关系。这么一些年下来,也算是掌握了一定的技巧,写篇文章记录一下,也就顺其自然了。总结一句话便是:GitHub 来搜索 Google 搜索不到的。它们可以 work 的原因,都是因为我们想做的事情,已经有人已经走过。如果你走的是一...
2018-11-29 14:06:13 162
原创 iOS App应用内评价
译自官方API文档前言从iOS 10.3开始,用户可以在APP内直接进行评分或评论,不需要再跳转到AppStore了。之前的流程是:用户点击评论按钮打开评论页面(或某个时刻自动弹出)->点击评论->跳转到AppStore->进行评论。苹果这一设计简化了评论流程,用户体验更好了一些。实现对于我们开发者来说,我们怎么实现这一功能呢?苹果在最新的iOS 10.3的SDK中的S...
2018-11-29 08:55:03 4648
转载 深入浅出 Core ML
Machine Learning 基本介绍机器学习是一门人工智能的科学。它通过对经验、数据进行分析,来改进现有的计算机算法,优化现有的程序性能。其基本流程如下图:如图,机器学习有三个要素:数据(Data)学习算法(Learning Algorith)模型(Model)以图片分析 App 为例,这个场景下的数据、学习算法和模型分别对应:数据:各种花的图片。这些数据称为此次机器学...
2018-11-26 09:18:28 1287
原创 一个5年iOS程序员的工作感悟,送给还在迷茫的你
前言每一个开发者,都有一段不愿提起的经历,很多年前,刚刚从大学毕业的时候,很多公司来校招。其中最烂俗的一个面试问题是:“你希望你之后三到五年的发展是什么?”。我当时的标准回答是(原话):“成为在某一方面能够独当一面的技术专家“。后来经历了几家不同的公司,换了不同的方向,才知道这个真是一个很难的问题。因为兵无常势,什么东西都是在不断的变化,一早的时候看好的东西可能会被淘汰。(几乎)没有人能够看准...
2018-11-23 17:31:53 2841
原创 iOS static、const和extern相关的问题
staticstatic分两种情况,修饰局部变量和全局变量。我们首先要搞清楚生命周期和作用域的概念。生命周期:这个变量能存活多久,它所占用的内存什么时候分配,什么时候收回。作用域:说白了就是这个变量在什么区域是可见的,可以拿来用的。static修饰局部变量在函数或者说代码块内部声明的变量叫局部变量。局部变量局部变量是存储在栈区的,它的生命周期是整个代码块,作用域也是整个代码块,一旦...
2018-11-20 08:21:52 239
原创 iOS 如何在现有的工程引入Flutter?
前言Flutter 是一个很有潜力的框架,但是目前使用Flutter的APP并不算很多,相关资料并不丰富,介绍现有工程引入Flutter的相关文章也比较少。项目从零开始,引入Flutter操作比较简单,但是现有工程引入Flutter 需要费很多精力和时间,这里是我在完成现有iOS工程引入Flutter后写的一次总结文章。Flutter 环境搭建首先是要搭建Flutter环境,之前也写了一篇相...
2018-11-16 08:40:23 4089
原创 iOS 搭建Flutter开发环境
一、 获取Flutter工程现在发布的是beta 版本,可以用git clone -b beta https://github.com/flutter/flutter.git也可以切换到master分支,使用master分支的代码二、将flutter加入path打开.bash_profile(一般在Mac的当前用户目录下),编辑添加:export PATH=[flutter工程目...
2018-11-15 08:47:12 3716 1
原创 iOS 组件化开发
在一个APP开发过程中,如果项目较小且团队人数较少,使用最基本的MVC、MVVM开发就已经足够了,因为维护成本比较低。 但是当一个项目开发团队人数较多时,因为每个人都会负责相应组件的开发,常规开发模式耦合会越来越严重,而且导致大量代码冲突,会使后期维护和升级过程中代码“牵一发而动全身”,额外带来很大的工作量,并且会导致一些潜在的BUG。在这时,组件化开发就派上很大用场了,所谓的组件化开发,就是把...
2018-11-14 14:36:25 1174
原创 iOS 搭建App框架(MVVM+RAC+路由)
项目的介绍项目使用了ReactiveCocoa框架,实现了MVVM架构,使用MVVM架构主要目的是分离视图(View)和模型(Model)。MVVM四大优点:低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。可重用性。你可以把一些视图逻辑放在一个V...
2018-11-13 16:27:58 3056
转载 注册登录的设计:基于33款APP的注册登录分析
对33款APP进行7个维度的对比分析后,作者为自己解决了有关注册登录设计的疑惑:并不是所有的应用都有设计注册登录的必要性;注册设计包括了路径设计、流程、内容设计……你在设计时是否也出现过类似的疑惑呢?不妨来看看作者对这些问题的总结。写这篇文章,主要是想解答自己内心的疑惑:注册登录流程基于不同行业、不同类型、不同的安全要求,是否存在最优的设计方案?在过往2年多,独立设计了几款产品,但对于注册...
2018-11-12 13:47:25 1252
原创 iOS 12.1正式版导致的TabBar 里面item错误偏移解决办法
今天早上趁早升级了正式版本的iOS12.1,结果发现了一个bug在Push控制器以后,点击返回键回来或者滑动返回,底部tabbar出现了错位的情况(以为是自己的问题,所以马上测试了一下其他应用)还有小米运动、企业微信等等大公司的也出现了相同的bug然后直接说处理方法(可能是暂时的解决版本,如果发现更好的,我会继续更新文章)在Appdelegate里面,设置全局的Tabbar样式[[U...
2018-11-08 14:22:41 1429
转载 iOS NSObject 底层本质
OC 转 C/C++NSObject 对象内存布局NSObject 内存大小OC 对象内存布局OC 对象内存大小一、OC 转 C/C++OC 的底层是通过 C\C++ 实现,所以 OC 代码编译过程一般是先将 OC 转为 C\C++ ,C\C++ 进一步转为汇编语言,最终转为机器代码。OC 的对象映射到 C\C++ 主要对应的是结构体,这里面的 “结构体” 并非 C 语言里面的结构...
2018-11-05 16:26:11 533
原创 iOS 语音播报解决方案(实现支付宝语音收款功能)
iOS10 语音播报填坑详解(解决串行播报中断问题)在来聊这类需求的解决方案之前,咱们还是先来聊一聊这类需求的真实使用场景:语音播报。语音播报需求运用最为广泛的应该是收银对账了,就类似于支付宝、微信、收钱吧等的收款语音提示一样。在iOS 10 之前,苹果没有提供通知扩展类的时候,如果想要实现杀进程也可以正常播报语音消息很难,从iOS 10添加了这一个通知扩展类后,实现杀进程播报语音就相对简单很...
2018-11-03 17:42:16 3143 2
动手搭建一个简单的区块链
2018-11-19
OC与JS的交互(WKWebview-MessageHandler实现)
2018-11-16
一个UICollectionView轻松搞定顶部悬停效果、顶部悬停效果、collectionView达到悬停效果
2018-11-16
3D卡片轮播,卡片轮播,无限轮播,DIY
2018-11-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人