自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

H.A.N的博客

Objective-C、Swift、热更新、APICloud跨平台开发、Flutter学习实践指南、性能优化实践指南

  • 博客(20)
  • 资源 (26)
  • 收藏
  • 关注

原创 iOS 性能优化之教你使用Allocations分析内存分配

AllocationsAllocations用来分析静态内存分配。Demo项目Demo AppDemo是一个简单的图片应用:首页只有一个简单的入口;次级页面会读取本地图片,加滤镜,然后按照瀑布流的方式显示出来;第三个页面提供大图显示;运行代码:点击Photos -> 进入main -> 点击一张图,进入详情页 -> Pop直到回到第一个页面,重复这段操作,从X

2018-11-19 11:34:19 1121

原创 iOS 漫谈App瘦身

前段时间部门开需求会,砍掉了应用中的部分需求。这简直就是给应用瘦身的良机!这个时候测试又提出来:安卓端的app在应用市场的包只有26M,而iOS端的app在App Store上却有88M。会后,我就找来安卓的测试机,对比了百度、支付宝、微信、京东、新浪和抖音几个App在应用市场和App Store上的大小,数据如下:显而易见,相同的应用,安卓端的应用安装包远小于iOS端。究其原因,笔者虽也查...

2018-11-19 09:13:44 652

原创 iOS 性能优化之图片加载和处理

前言本文基于WWDC2018-Image and Graphics Best Practices,对图片加载和处理的思考和总结。本文不是WWDC翻译,如果需要了解视频内容可以点击上面的链接观看。正文图片的显示分为三步:加载、解码、渲染。通常,我们操作的只有加载,解码和渲染是由UIKit进行。什么是解码?以UIImageView为例。当其显示在屏幕上时,需要UIImage作为数据源。...

2018-11-08 11:01:39 1659

原创 适合初学者的IDEA使用教程

1、创建一个项目打开IDEA,若初次使用,我们需要创建一个项目如图所示:点击Create New Project 会出现这个界面,此时我们需要创建一个空白项目,如图所示:然后一直点击next,直到finish如图所示:接下来我们要配置jdk如图所示:如图所示,先选择SDKs,然后选择+号点击ok会出现如下界面:然后将你jdk的位置添加进来,点击ok即可。此时还有最后一个配置,...

2018-11-30 09:52:04 3608

原创 Mac 安装IDEA以及激活方法

首先需要下载IDEA,选择适合自己的版本,这里是安装Mac版本,后缀名是.dmg的文件,下载好后,在路径:访达->下载,可以看到下载好的文件。双击文件即可完成安装,安装过程中可能需要输入密码。如果软件图标没有出现在应用程序目录中,可以将文件拖拽到应用程序目录,方便以后访问软件。激活方法有多种,这里用的是补丁激活。可以进入http://idea.lanyus.com/下载补...

2018-11-29 16:27:30 21428

原创 MacOS系统 安装 JDK 并配置环境

第一步 : 下载 mac 版的 JDK下载地址// 同意协议并点击下载第二步 : 下载完成后, 按提示完成安装.打开Finder,可以在下图所示的路径中找到安装好的jdk:其中Contents下的Home文件夹,是该JDK的根目录其中:bin目录下存放JDK用于开发的一些终端命令工具。常见的工具如:“javac”的作用是将java源文件编译为class文件(即自解码文件);...

2018-11-29 15:27:59 793

原创 GitHub 寻宝指南

作为一个资深的程序员,GitHub 是我用过的最好工具,因为 Google 并非总是那么用。GitHub 是一个宝藏库,可没有藏宝图,GitHub 一1亿的仓库也和你没有关系。这么一些年下来,也算是掌握了一定的技巧,写篇文章记录一下,也就顺其自然了。总结一句话便是:GitHub 来搜索 Google 搜索不到的。它们可以 work 的原因,都是因为我们想做的事情,已经有人已经走过。如果你走的是一...

2018-11-29 14:06:13 149

原创 iOS App应用内评价

译自官方API文档前言从iOS 10.3开始,用户可以在APP内直接进行评分或评论,不需要再跳转到AppStore了。之前的流程是:用户点击评论按钮打开评论页面(或某个时刻自动弹出)->点击评论->跳转到AppStore->进行评论。苹果这一设计简化了评论流程,用户体验更好了一些。实现对于我们开发者来说,我们怎么实现这一功能呢?苹果在最新的iOS 10.3的SDK中的S...

2018-11-29 08:55:03 4528

转载 深入浅出 Core ML

Machine Learning 基本介绍机器学习是一门人工智能的科学。它通过对经验、数据进行分析,来改进现有的计算机算法,优化现有的程序性能。其基本流程如下图:如图,机器学习有三个要素:数据(Data)学习算法(Learning Algorith)模型(Model)以图片分析 App 为例,这个场景下的数据、学习算法和模型分别对应:数据:各种花的图片。这些数据称为此次机器学...

2018-11-26 09:18:28 1164

原创 一个5年iOS程序员的工作感悟,送给还在迷茫的你

前言每一个开发者,都有一段不愿提起的经历,很多年前,刚刚从大学毕业的时候,很多公司来校招。其中最烂俗的一个面试问题是:“你希望你之后三到五年的发展是什么?”。我当时的标准回答是(原话):“成为在某一方面能够独当一面的技术专家“。后来经历了几家不同的公司,换了不同的方向,才知道这个真是一个很难的问题。因为兵无常势,什么东西都是在不断的变化,一早的时候看好的东西可能会被淘汰。(几乎)没有人能够看准...

2018-11-23 17:31:53 2818

原创 iOS 干货--实现炫酷波浪效果

前言最近产品提出一个新需求,要实现一个波浪动画效果。自己研究,简单实现了一下,如果大家有别的方法可以共享一下

2018-11-21 16:45:38 686

原创 iOS static、const和extern相关的问题

staticstatic分两种情况,修饰局部变量和全局变量。我们首先要搞清楚生命周期和作用域的概念。生命周期:这个变量能存活多久,它所占用的内存什么时候分配,什么时候收回。作用域:说白了就是这个变量在什么区域是可见的,可以拿来用的。static修饰局部变量在函数或者说代码块内部声明的变量叫局部变量。局部变量局部变量是存储在栈区的,它的生命周期是整个代码块,作用域也是整个代码块,一旦...

2018-11-20 08:21:52 220

原创 iOS 如何在现有的工程引入Flutter?

前言Flutter 是一个很有潜力的框架,但是目前使用Flutter的APP并不算很多,相关资料并不丰富,介绍现有工程引入Flutter的相关文章也比较少。项目从零开始,引入Flutter操作比较简单,但是现有工程引入Flutter 需要费很多精力和时间,这里是我在完成现有iOS工程引入Flutter后写的一次总结文章。Flutter 环境搭建首先是要搭建Flutter环境,之前也写了一篇相...

2018-11-16 08:40:23 4054

原创 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 3684 1

原创 iOS 组件化开发

在一个APP开发过程中,如果项目较小且团队人数较少,使用最基本的MVC、MVVM开发就已经足够了,因为维护成本比较低。 但是当一个项目开发团队人数较多时,因为每个人都会负责相应组件的开发,常规开发模式耦合会越来越严重,而且导致大量代码冲突,会使后期维护和升级过程中代码“牵一发而动全身”,额外带来很大的工作量,并且会导致一些潜在的BUG。在这时,组件化开发就派上很大用场了,所谓的组件化开发,就是把...

2018-11-14 14:36:25 1133

原创 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 3036

转载 注册登录的设计:基于33款APP的注册登录分析

对33款APP进行7个维度的对比分析后,作者为自己解决了有关注册登录设计的疑惑:并不是所有的应用都有设计注册登录的必要性;注册设计包括了路径设计、流程、内容设计……你在设计时是否也出现过类似的疑惑呢?不妨来看看作者对这些问题的总结。写这篇文章,主要是想解答自己内心的疑惑:注册登录流程基于不同行业、不同类型、不同的安全要求,是否存在最优的设计方案?在过往2年多,独立设计了几款产品,但对于注册...

2018-11-12 13:47:25 1195

原创 iOS 12.1正式版导致的TabBar 里面item错误偏移解决办法

今天早上趁早升级了正式版本的iOS12.1,结果发现了一个bug在Push控制器以后,点击返回键回来或者滑动返回,底部tabbar出现了错位的情况(以为是自己的问题,所以马上测试了一下其他应用)还有小米运动、企业微信等等大公司的也出现了相同的bug然后直接说处理方法(可能是暂时的解决版本,如果发现更好的,我会继续更新文章)在Appdelegate里面,设置全局的Tabbar样式[[U...

2018-11-08 14:22:41 1400

转载 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 516

原创 iOS 语音播报解决方案(实现支付宝语音收款功能)

iOS10 语音播报填坑详解(解决串行播报中断问题)在来聊这类需求的解决方案之前,咱们还是先来聊一聊这类需求的真实使用场景:语音播报。语音播报需求运用最为广泛的应该是收银对账了,就类似于支付宝、微信、收钱吧等的收款语音提示一样。在iOS 10 之前,苹果没有提供通知扩展类的时候,如果想要实现杀进程也可以正常播报语音消息很难,从iOS 10添加了这一个通知扩展类后,实现杀进程播报语音就相对简单很...

2018-11-03 17:42:16 3103 2

IDEA for mac汉化(2018.2)

IDEA for mac汉化版本2018.2;IDEA for mac汉化版本2018.2

2018-11-30

IDEA for mac汉化(2016.3)

IntelliJ IDEA for mac汉化,汉化版本2016.3。更新时间:2016-03-19 22:46:00

2018-11-30

仿美团、饿了么加入购物车以及加入购物车动画

仿美团、饿了么加入购物车以及加入购物车动画;可自定义话动画样式

2018-11-19

一份走心的JS-Native交互电子书

一份走心的JS-Native交互电子书,能够帮助更多的同学掌握 Hybrid 在 iOS 中的应用。

2018-11-19

带警示效果的TextField、改变光标起始位置

带警示效果的TextField、改变光标起始位置;自由定制;

2018-11-19

排序按钮封装、升序、降序

排序按钮封装、升序、降序;按钮一共有三种状态:非选中、选中升序、选中降序。

2018-11-19

几代码实现导航栏透明渐变、实现TabBar中间凸起

几代码实现导航栏透明渐变、实现TabBar中间凸起;可自定义

2018-11-19

实现支付宝语音收款功能、串行语音播报

语音播报。 语音播报需求运用最为广泛的应该是收银对账了,就类似于支付宝、微信、收钱吧等的收款语音提示一样。

2018-11-19

支持控制台‘po’打印,打印中文字典/数组,支持格式化

支持控制台‘po’打印,打印中文字典/数组,支持格式化;

2018-11-19

弹框大全,代理,block等实现

弹窗大全实现思路:1.通过代理方法回调的弹窗;2.通过block回调封装的弹窗;3.通过xib创建封装的弹窗;4.新建控制器作为弹窗

2018-11-19

动手搭建一个简单的区块链

区块链就是一个不可变、有序的链(chain)结构,链中保存着称之为块(block)的记录,这些记录可以是交易,文件或是任意你想要的数据。其中重要的是它们通过哈希链接在一起。

2018-11-19

数组越界处理,Runtime处理,分类处理

数组越界处理、Runtime处理、分类处理,使用不同的方法

2018-11-19

启动加载广告思路、广告View封装

启动加载广告思路、广告View封装;可自定义设置广告。

2018-11-19

OC与JS的交互(WKWebview-MessageHandler实现)

iOS 中实现加载 web 页面主要有两种控件,UIWebView 和 WKWebview,两种控件对应具体的实现方法不同。WKWebView是苹果公司在iOS8系统推出的,这里我们主要概述WebKit中更新的WKWebView控件的新特性与使用方法。

2018-11-16

使用iconfont图标

在iOS中使用iconfont图标替换原始切图,减少IPA大小。

2018-11-16

搭建App框架(MVVM+RAC+路由)

项目使用了ReactiveCocoa框架,实现了MVVM架构,使用MVVM架构主要目的是分离视图(View)和模型(Model)。

2018-11-16

一个UICollectionView轻松搞定顶部悬停效果、顶部悬停效果、collectionView达到悬停效果

一个UICollectionView轻松搞定顶部悬停效果、顶部悬停效果、collectionView达到悬停效果

2018-11-16

3D卡片轮播,卡片轮播,无限轮播,DIY

参考UITableView的UITableViewDataSource和UITableViewDelegate两个方法实现;支持五险轮播,可以加载本地图片,也可以加载网络图片,可以根据自己的需求自定义。

2018-11-16

仿某宝,自定义选择地址

自定义选择地址封装,仿某宝。根据需求定制化修改源代码

2018-07-19

自定义索引控件封装

自定义索引控件,可以根据自己的需求修改源代码。定制化

2018-07-19

Base64加密解密封装

自定义密码表,Base64加密解密代码封装,源代码可以进行自定义

2018-07-19

UILabel内容中某个文字添加点击事件

简单方便的给UILabel内容中某几个文字添加点击事件,实现定制要求

2018-07-19

简单代码实现跑炫酷马灯效果

简单实现炫酷的跑马灯,可自定义效果。修改源代码定制

2018-07-19

一行代码实现星级评价

超简单的实现星级评价,简单封装,简单的实现。可以随心修改源代码

2018-07-19

隐式切换主控制器代码

一行代码,可以巧妙切换主控制器,实现你想要的效果,不信你可试试

2018-01-31

倒计时封装

功能强大的短信倒计时,一行代码调用,方便简单解决问题

2018-01-31

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除