自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hard_man的专栏

iOS, Android, Cocos, Unity, 游戏制作

  • 博客(68)
  • 收藏
  • 关注

原创 iOS应用模块化的思考及落地方案(二)模块化自动构建工具的使用

1.0 iOS模块化中的问题前文已经介绍了模块化的流程及一些常见的问题,我们在这里再次总结一下。在工作中,当我们开始一个新项目的时候,最先考虑的就是模块化工作。模块化工作的想法是很美好的,可是执行过程中会遇到很多的问题,而这些问题可能会让我们在工作中举步维艰。工具使用问题。iOS的模块化一般会使用cocoapods工具,这个工具很强大,内容也很丰富,我们想要完成模块化工作,需要建立私有...

2019-04-28 23:54:09 329

原创 iOS应用模块化的思考及落地方案(一)模块的划分及模块化工作流程

1.0 什么是模块化很多关于重构及设计模式的介绍中,经常提到的几个词语是复用及解耦。模块化之所以被提出,也更多是为了解决这几个问题。复用可以减少重复造轮子的情况,很容易理解的是,我们经常使用的github上的第三方框架,比如,AFNetworking等,有了这些组件,我们就不需要再写一遍了。解耦可以减少类或文件之间的关联,如果一个类引用了其他10个类,那么当我们看到这个类或修改这个类的时候...

2019-04-28 23:53:00 361

原创 算法(5)哈希表

1.0 问题描述实现数据结构:哈希表。2.0 问题分析哈希表可以看作我们经常使用的字典(swift)或对象(js),可以让一个key&value对一一对应,可以快速根据key找到value。哈希表内部使用数组实现,我们需要将不论任何类型的key计算出与之一一对应的数字来,数字的大小介于0到数组尺寸之间,这样,我们可以把value直接存储到数组的对应位置。通过key计算出唯一数字...

2019-04-25 23:28:57 261

原创 算法(4)数据结构:堆

#1.0 问题描述实现数据结构:堆。#2.0 问题分析堆一般使用数组来表示,其中某个节点下标i的两个子节点的下标为 2i+1 和 2i+2。堆是一棵完全二叉树。堆有3种基本操作:创建,插入,删除。这3种操作都需要通过“调整堆”的方式来实现。调整堆是指,对堆中的某个节点,若它的值和它所有子节点相比,不是最大/最小,那么就需要将最大/最小的元素和当前节点交换,这种操作成为“调整堆”。创建...

2019-04-08 17:18:15 174

原创 算法(3)简单四则运算

#1.0 问题描述实现10以内四则运算(只包含数字,±*/和小括号)#2.0 问题分析四则运算使用“后缀表达式”算法来计算,后缀表达式可以无需考虑运算符优先级,直接从左至右依次计算。问题分解成2部分,一是将“中缀表达式”(我们正常写的四则运算字符串样式,即我们的输入表达式)转为“后缀表达式”;二是使用“后缀表达式”求值。“中缀表达式”转“后缀表达式”流程:首先建立一个栈和一个队列,...

2019-04-08 17:17:46 2206

原创 算法(2)KMP算法

#1.0 问题描述实现KMP算法查找字符串。#2.0 问题分析“KMP算法”是对字符串查找“简单算法”的优化。字符串查找“简单算法”是源字符串每个字符分别使用匹配串进行匹配,一旦失配,模式串下标归0,源字符串下标加1。可以很容易计算字符串查找“简单算法”的时间复杂度为O(m*n),其中n表示源字符串长度,m表示匹配串长度。KMP算法的匹配方式同简单算法的匹配方式相同,只不过在失配的时...

2019-04-08 17:17:11 299

原创 算法(1)斐波那契数列

#1.0 问题描述实现斐波那契数列,求第N项的值#2.0 问题分析斐波那契数列最简单的方法是使用递归,递归和查表法同时使用,可以降低复杂度。根据数列特点,同时进行计算的数值其实只有3个,所以可以使用3个变量循环递进计算结果。3个变量可以简化为2个变量。#3.0 代码实现3.1使用swift实现func fbnq(_ n: Int) -> UInt64{ if n ...

2019-04-08 17:16:40 329

原创 详解AFNetworking的HTTPS模块

0.0 简述文章内容包括:AFNetworking简介ATS和HTTPS介绍AF中的证书验证介绍如何创建服务端和客户端自签名证书如何创建简单的https服务器对CA正式证书和自签名证书的各种情况进行代码验证文中所涉及的文件和脚本代码请看这里。1.0 AFNetworking简介AFNetworking(下面简称AF)是一个优秀的网络框架,从事iOS开发工作的同学几乎都用过它...

2018-11-25 13:50:23 683

原创 javascript函数全解

0.0 概述本文总结了js中函数相关的大部分用法,对函数用法不是特别清晰的同学可以了解一下。1.0 简介同其他语言不同的是,js中的函数有2种含义。普通函数:同其他语言的函数一样,是用于封装语句块,执行多行语句的语法结构。构造函数:不要把它当作函数,把它当作class,内部可以使用this表示当前对象。【注】后续代码基于ES6&ES7标准,笔者是在nodejs v10.7.0...

2018-11-14 23:12:05 252

原创 iOS中你可能没有完全弄清楚的(二)自己实现一个KVO源码及解析

前几天写了一篇blog(点这里),分析了系统KVO可能的实现方式。并添加了简单代码验证。既然系统KVO不好用,我们完全可以根据之前的思路,再造一个可以在项目中使用的KVO的轮子。代码已经上传到github: https://github.com/hardman/AWSimpleKVO。看了觉得有帮助的同学,可以点一下github的star。1. 功能介绍支持如下功能:...

2018-08-16 10:52:40 341

原创 iOS中你可能没有完全弄清楚的(一)synthesize

  1. 什么是synthesizesynthesize中文意思是合成,代码中我们经常这样用。@interface Test: NSObject@property (nonatomic, unsafe_unretained) int i;@end@implementation Test@synthesize i;@end复制代码使用synthesize的2个...

2018-08-03 11:32:04 1314

原创 0基础JavaScript入门教程(一)认识代码

1. 环境:JavaScript简称js,后续我们将使用js来代替JavaScript。认识代码前,需要安装js代码运行环境。安装nodejs:在https://nodejs.org/zh-cn/ 下载LTS版本,然后安装 安装visual studio code:https://code.visualstudio.com/ 下载安装 注:本教程基于ES6标准安装完成后,打开vi...

2018-07-30 17:56:34 1318

原创 iOS的KVO实现剖析

KVO原理对于KVO的原理,很多人都比较清楚了。大概是这样子的:假定我们自己的类是Object和它的对象 obj, 当obj发送addObserverForKeypath:keypath消息后,系统会做3件事情:动态创建一个Object的子类,名字可自定义假设叫做 Object_KVONotify。 同时,子类动态增加方法 setKeypath:,动态添加的方法会绑定到一个c语言的函...

2018-07-17 15:30:30 252

原创 关于@2x,@3x的区别及图片的绘制

为什么会有2倍,3倍图网络上会有很多的解释,这些解释都是对的。通俗点说,出现这种区别是因为,屏幕尺寸没有屏幕分辨率增长的快(所以更高清了)。所以,对于iPhone6来说,1pt(代码中的尺寸值单位,也可理解为屏幕物理尺寸的换算单位)代表2px。对于iPhone6P来说,1pt代表3px。所以对于iPhone6P和iPhone6来说,我们如果都想在屏幕上显示一个100ptx100pt的图片。iPho...

2018-06-08 19:45:05 14969

原创 仿斗鱼聊天:基于CoreText的面向对象图文排版工具AWRichText

AWRichText 基于CoreText,面向对象,极简,易用,高效,支持精确点击,UIView混排,GIF动图,并不仅仅局限于图文混排的富文本排版神器。 代码地址:https://github.com/hardman/AWRichText – 喜欢的同学可以star。 接下来会在blog中更新一些具体实现细节。简述很多app中都有聊天功能,图文混排也

2018-01-07 23:30:26 537

原创 1小时学会:最简单的iOS直播推流(十一)sps&pps和AudioSpecificConfig介绍(完结)

最简单的iOS 推流代码,视频捕获,软编码(faac,x264),硬编码(aac,h264),美颜,flv编码,rtmp协议,陆续更新代码解析,你想学的知识这里都有,愿意懂直播技术的同学快来看!! 源代码:https://github.com/hardman/AWLive简述sps/pps/AudioSpecificConfig前文中已经多次提到过sps&pps/AudioSpecifi

2017-11-23 12:22:25 3212

原创 1小时学会:最简单的iOS直播推流(十)librtmp使用介绍

最简单的iOS 推流代码,视频捕获,软编码(faac,x264),硬编码(aac,h264),美颜,flv编码,rtmp协议,陆续更新代码解析,你想学的知识这里都有,愿意懂直播技术的同学快来看!! 源代码:https://github.com/hardman/AWLivertmp(一般大写,小写会被认为英文不好或不专业,iOS开发者对这一点更为敏感)协议是Adobe公司为Flash视频的

2017-11-23 12:21:27 2901

原创 1小时学会:最简单的iOS直播推流(九)flv 编码与音视频时间戳同步

最简单的iOS 推流代码,视频捕获,软编码(faac,x264),硬编码(aac,h264),美颜,flv编码,rtmp协议,陆续更新代码解析,你想学的知识这里都有,愿意懂直播技术的同学快来看!! 源代码:https://github.com/hardman/AWLive前文介绍了如何获取音视频的aac/h264数据,那么如何将数据写入rtmp流中呢? rtmp最初是Adobe Fla

2017-11-23 12:20:18 4883 4

原创 1小时学会:最简单的iOS直播推流(八)h264/aac 软编码

最简单的iOS 推流代码,视频捕获,软编码(faac,x264),硬编码(aac,h264),美颜,flv编码,rtmp协议,陆续更新代码解析,你想学的知识这里都有,愿意懂直播技术的同学快来看!! 源代码:https://github.com/hardman/AWLive软编码包含3部分内容: 1. 将pcm/yuv数据编码成aac/h264格式 2. 将aac/h264数据封装成f

2017-11-23 12:19:04 1674

原创 1小时学会:最简单的iOS直播推流(番外)运行不起AWLive的demo的同学请看这里

最简单的iOS 推流代码,视频捕获,软编码(faac,x264),硬编码(aac,h264),美颜,flv编码,rtmp协议,陆续更新代码解析,你想学的知识这里都有,愿意懂直播技术的同学快来看!! 源代码:https://github.com/hardman/AWLive我收到了很多反馈和评论,问我为什么AWLive运行不起来。 大概是说报这样一个错误: 我实在没想到会有人问这个

2017-01-25 10:49:01 1715 5

原创 1小时学会:最简单的iOS直播推流(七)h264/aac 硬编码

最简单的iOS 推流代码,视频捕获,软编码(faac,x264),硬编码(aac,h264),美颜,flv编码,rtmp协议,陆续更新代码解析,你想学的知识这里都有,愿意懂直播技术的同学快来看!! 源代码:https://github.com/hardman/AWLive 群:552660248前面已经介绍了如何从硬件设备获取到音视频数据(pcm,NV12)。但是我们需要的视频

2016-12-07 22:02:59 8071 10

原创 1小时学会:最简单的iOS直播推流(六)h264、aac、flv介绍

最简单的iOS 推流代码,视频捕获,软编码(faac,x264),硬编码(aac,h264),美颜,flv编码,rtmp协议,陆续更新代码解析,你想学的知识这里都有,愿意懂直播技术的同学快来看!! 源代码:https://github.com/hardman/AWLive 群:552660248前面介绍了如何捕获音视频原始数据,介绍了yuv和pcm。下面来介绍一下我们的想要转换

2016-11-24 22:43:38 4574 1

原创 1小时学会:最简单的iOS直播推流(五)yuv、pcm数据的介绍和获取

最简单的iOS 推流代码,视频捕获,软编码(faac,x264),硬编码(aac,h264),美颜,flv编码,rtmp协议,陆续更新代码解析,你想学的知识这里都有,愿意懂直播技术的同学快来看!! 源代码:https://github.com/hardman/AWLive 群:552660248前面介绍了如何通过相机实时获取音视频数据。我们接下来就需要了解获取到的数据到底是什么

2016-11-16 23:17:40 11535 12

原创 1小时学会:最简单的iOS直播推流(四)如何使用GPUImage,如何美颜

最简单的iOS 推流代码,视频捕获,软编码(faac,x264),硬编码(aac,h264),美颜,flv编码,rtmp协议,陆续更新代码解析,你想学的知识这里都有,愿意懂直播技术的同学快来看!! 源代码:https://github.com/hardman/AWLive 群:552660248上一篇文章介绍了如何使用系统方法捕获视频数据,但是更多的时候,为了使用美颜滤镜,我们

2016-11-16 00:03:54 10843 4

原创 1小时学会:最简单的iOS直播推流(三)使用系统接口捕获音视频数据

最简单的iOS 推流代码,视频捕获,软编码(faac,x264),硬编码(aac,h264),美颜,flv编码,rtmp协议,陆续更新代码解析,你想学的知识这里都有,愿意懂直播技术的同学快来看!!源代码:https://github.com/hardman/AWLive群:552660248通过系统相机录制视频获取音视频数据,是推流的第一步。 源码中提供2种获取音视频数据的方法:一是使用系统自带接

2016-11-14 11:34:25 6348 6

原创 1小时学会:最简单的iOS直播推流(二)代码架构概述

最简单的iOS 推流代码,视频捕获,软编码(faac,x264),硬编码(aac,h264),美颜,flv编码,rtmp协议,陆续更新代码解析,你想学的知识这里都有,愿意懂直播技术的同学快来看!!源代码:https://github.com/hardman/AWLive群:552660248推流流程使用rtmp协议(其他协议也类似)推流的大体流程如下: 1. 通过系统相机捕获视频及声音,该美颜的美

2016-11-10 23:33:21 4941

原创 1小时学会:最简单的iOS直播推流(一)介绍

最近在做iOS直播,研究了相关直播技术,主要包含两方面:推流,播放。所以这次主要研究推流技术。并将代码开源,然后在blog里做一些简单的代码解析。源代码:https://github.com/hardman/AWLive群:552660248

2016-11-07 00:13:19 11256 5

原创 Adobe源码泄漏?3行代码搞定,Flash动画无缝导入Android/iOS/cocos2dx(二)

首先确保系统中安装了flash,并且flash版本应该在cs3或者以上。然后把"源码根目录/tools/flashScript"目录内的所有文件和文件夹copy到如下目录:- Mac:~/Library/Application Support/Adobe/[Flash CS+版本号]/[en_US或者zh_CN]/Configuration/Commands- Windows:C:\Users\[用户名]\A

2016-04-22 19:40:15 6590 23

原创 Adobe源码泄漏?3行代码搞定,Flash动画无缝导入Android/iOS/cocos2dx(一)

一. 项目介绍—软件名称:[FlashAnimationToMobile]这是一个把flash中的关键帧动画(不是序列帧)导出,然后在iOS/Android原生应用中解析并播放的一个插件。除了原生App,它也能够支持Cocos2dx(3.x)。这个库能够满足游戏,App开发中90%的2D

2016-04-22 18:36:44 7039 3

原创 终极方案!解决正确设置LaunchImage后仍然不显示的问题

对于如何设置LaunchImage,网络上有各种各样的教程。主要分2点:1. 正确设置图片尺寸2. 取消LaunchScreen.xib但是经过上述步骤之后,你觉得完全没有问题了,但是仍然无法显示LaunchImage。或者,你在多个模拟器上运行该程序,有的模拟器能够显示,有的模拟器不能显示。这时候你可能会有2个选择:1. 菜单-product-Clean-rebuild,也就是重新build程序。2. 菜单-Xcode-prefer

2016-03-15 16:18:50 14298 1

原创 只有20%的iOS程序员能看懂:详解intrinsicContentSize 及 约束优先级/content Hugging/content Compression Resistance

在了解intrinsicContentSize之前,我们需要先了解2个概念:AutoLayout在做什么约束优先级是什么意思。如果不了解这两个概念,看intinsic content size没有任何意义。 注:由于上面这几个概念都是针对UIView或其子类(UILabel,UIImageView等等)来说的。所以下文中都用UIView指代。AutoLayout在做什么一个UIView想要显

2016-03-14 17:38:59 33840 11

转载 浅谈 MVP in Android

一、概述对于MVP(Model View Presenter),大多数人都能说出一二:“MVC的演化版本”,“让Model和View完全解耦”等等。本篇博文仅是为了做下记录,提出一些自己的看法,和帮助大家如何针对一个Activity页面去编写针对MVP风格的代码。对于MVP,我的内心有一个问题:为何这个模式出来后,就能被广大的Android的程序员接受呢?问

2016-03-04 22:39:56 749

原创 仅需6步,教你轻易撕掉app开发框架的神秘面纱(6):各种公共方法及工具类的封装

封装统一公共方法为什么要封装公共方法封装公共方法有2方面的原因: 一是功能方面的原因:有些方法很多地方都会用,而且它输入输出明确,并且跟业务逻辑无关。比如检查用户是否登录,检查某串数字是否为合法的手机号。像这种方法就应该封装起来,供各个模块调用,避免重复造轮子。二是防止出错:每一个合格的程序员就是从一个个错误中走出来的,任何一个架构包括android/iOS都有一些容易犯的错,我们可以把这些容易犯

2016-03-04 22:02:15 4735

转载 Android 常见工具类封装

1,MD5工具类:public class MD5Util { public final static String MD5(String s) { char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd',

2016-03-04 21:57:51 1066

原创 仅需6步,教你轻易撕掉app开发框架的神秘面纱(5):数据持久化

遇到的问题有的时候程序中需要全局皆可访问的变量,比如:用户是否登录,用户个人信息(用户名,地区,生日),或者一些其他信息如:是否是首次登录,是否需要显示新手引导等等。其中有些数据需要持久化到本地硬盘中,比如:大多数应用,当用户第一次启动应用的时候,需要显示应用介绍和新手引导的页面。而应用介绍只在第一次启动时显示。所以我们需要记录一个值表示当前是否已经显示过了应用介绍。并且每次在应用开启的时候检查这

2016-03-04 14:49:14 1123

原创 仅需6步,教你轻易撕掉app开发框架的神秘面纱(4):网络模块的封装

程序框架确定了,还需要封装网络模块。一个丰富多彩的APP少不了网络资源的支持,毕竟用户数据要存储,用户之间也要交互,用户行为要统计等等。android网络模块核心功能使用xUtils3开源框架来完成。而iOS则使用AFNetWorking

2016-02-19 17:15:07 3153

原创 仅需6步,教你轻易撕掉app开发框架的神秘面纱(3):构造具有个人特色的MVP模式

之前我们说过MVP模式最大的问题在于:每写一个Activity/Fragment需要写4个对应的文件,对于一个简易的app框架来说太麻烦了。所以我们需要对MVP进行一定的简化。 关于MVP模式介绍,可以参照:[1] MVP模式最大的特点是:业务逻辑和页面元素的分离,以适应业务逻辑和页面各自可能发生的变化和多样性。

2016-02-17 17:24:19 1368

原创 仅需6步,教你轻易撕掉app开发框架的神秘面纱(2):MVP比MVC更好吗

由于android天然的MVC,本来不需要另外设计直接使用即可。但是个人对于MVP模式更加欣赏,其将ui完全与业务逻辑分离的思路很不错。 那么什么是业务逻辑?个人认为,对数据(即MVC中的M)的处理即为业务逻辑,数据主要有3个来源: 1. 服务端返回的数据 2. 从其它途径传入的数据, 3. 自己定义的数据(需要传递时)。

2016-02-15 16:07:30 963

原创 仅需6步,教你轻易撕掉app开发框架的神秘面纱(1):确定框架方案

做游戏的用cocos2dx+lua,游戏开发自有它的一套框架机制。而现在公司主要项目要做android和iOS应用。本文主要介绍如何搭建简单易用的app应用框架

2016-02-15 15:49:26 1583

转载 一个基于组件的动态对象系统

http://hulefei29.iteye.com/blog/1490889一、静态的痛苦     作为一个项目经验丰富的程序员,你经常会遇到游戏开发过程中的“反复”(iterations):今天美术将一个静态的模型改为骨骼模型并添加了动画;明天企划会议上决定把所有未拾取武器由原先的闪光效果改为原地旋转;后天你的老板告诉你:配合投资方的要求,需要提升AI的质量,这使得AI需要响应

2013-05-03 15:03:24 745

空空如也

空空如也

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

TA关注的人

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