- 博客(129)
- 收藏
- 关注
原创 iOS - Method Swizzling
Method Swizzling 通过改变特定 selector(方法)与实际实现之间的映射,在 runtime 时将一个方法的实现替换成其它方法的实现。 用途:替换UIViewController的viewWillAppear方法,用于观察项目结构。Objective-C//// UIViewController+Swizzling.m// SwizzlingDemo//// Cr
2017-05-25 22:46:40 879
转载 iOS - 持续集成,持续交付,持续部署联系和区别
iOS持续部署集成Jenkins或者Travis 部署蒲公英或者fir.im 极限编程的一种,总结ing…经常会听到持续集成,持续交付,持续部署,三者究竟是什么,有何联系和区别呢?假如把开发工作流程分为以下几个阶段: 编码 -> 构建 -> 集成 -> 测试 -> 交付 -> 部署 正如你在上图中看到,「持续集成(Continuous Integration)」、「持续交付(Continuo
2017-04-12 20:24:44 856
原创 NULL、nil、Nil、NSNull的区别
NULL、nil、Nil、NSNull的区别为什么在 Objective-C 中给 nil 发送消息程序不会崩溃?我们知道在 Objective-C 中给 nil 发送消息程序不会崩溃, Objective-C 是以 C 语言为基础的, PC 上,在 C 语言中对空指针进行操作, 程序会由于越界访问而出现保护错进而崩溃, 但是 Objective-C 中为什么不会崩溃呢? 原因需要从源代码
2017-02-13 11:57:27 614
转载 iOS 底层实现 - KVO
简介KVO是基于观察者设计模式来实现的。 观察者模式:一个目标对象管理所有依赖于它的观察者对象,并在它自身的状态改变时主动通知观察者对象。这个主动通知通常是通过调用各观察者对象所提供的接口方法来实现的。观察者模式较完美地将目标对象与观察者对象解耦。 手动实现键值观察(代码示例) 被观察的对象Target(重写setter/getter方法) Target.h@interface Target
2016-11-24 22:29:49 420
转载 C语言预处理指令整理
什么是预处理指令?预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译。这样做的好处是,经过处理后的代码,将会变的很精短。C源码在进行编译前会先经过预处理,预处理指令均以#开头,结尾没有分号(;)不是C语句。预处理器采用“语言符号”的分析方式,将空格作为区分标志之间的符号,一行作为一条指令,“\”可以将预处理
2016-11-10 16:00:24 531
原创 REST
什么是REST?REST即表现状态传输,Representational State Transfer。一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。先说REST名称REST:REpresentational State Transfer = 直接翻译:表现层状态转移。这个中文直译经常出现在很多博客中。尼玛谁听得懂“表现层状态转移”?这是人话吗?
2016-11-10 09:08:12 686
转载 iOS - IM环信集成
发送语音AMR和WAViOS的AVAudioRecorder默认的保存格式是WAV格式,但是安卓中使用的是AMR格式,所以iOS录音发送前需要转换格式。昵称和头像环信提供了获取头像和昵称的两种方式:方法一 从APP服务器获取昵称和头像● 昵称和头像的获取:当收到一条消息(群消息)时,得到发送者的用户ID,然后查找手机本地数据库是否有此用户ID的昵称和头像,如没有则调用APP服务器接口通过用户ID查询
2016-11-09 17:19:34 904
原创 前后端分离开发
为什么要前后端分离开发?前端UI搭建得差不多了,可是后台的API还没有写好,那就丢下工作嗨起来?可惜这样的好愿望就被Mock和Swagger这样的破东西给毁了,项目可以解藕,人也是可以的,只要双方有接口文档的约定。接口文档解决方案1.Swagger,写起来太费劲,修改接口的同时还需要修护文档,增加工作量。 2.SosoApi,简化了Swagger的书写,但是把接口文档放在网上会有一定的安全隐患。
2016-11-09 08:36:58 707
原创 iOS - 默认NavigationBar
为什么要使用默认NavigationBar?1.自动实现Swipe To Pop动画2.结构清晰,代码容易维护影响默认NavigationBar的因素。App的两种结构方式 一、从LoginViewController是否释放,对默认NavigationBar的影响。UINavigationController从LoginViewController push过来的时候是否把LoginViewCo
2016-11-09 07:58:55 371
原创 iOS - AVFoundation
Recorder & Player1.Recorder // 设定存储路径 NSArray *pathComponents = [NSArray arrayWithObjects:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject], @"MyAudioMem
2016-11-08 11:21:40 405
转载 iOS - UIApprearance
一、简介iOS5及其以后提供了一个比较强大的工具UIAppearance,我们通过UIAppearance设置一些UI的全局效果,这样就可以很方便的实现UI的自定义效果又能最简单的实现统一界面风格,它提供如下两个方法。+ (id)appearance这个方法是统一全部改,比如你设置UINavBar的tintColor,你可以这样写:[[UINavigationBar appearance] set
2016-10-27 11:15:16 375
转载 Objective-C编码规范
语言应该使用US英语. 应该:UIColor *myColor = [UIColor whiteColor];不应该:UIColor *myColour = [UIColor whiteColor];代码组织在函数分组和protocol/delegate实现中使用#pragma mark -来分类方法,要遵循以下一般结构:#pragma mark - Lifecycle- (instance
2016-10-26 23:18:33 346
原创 iOS - 图表Chart
iOS图表: https://github.com/ameizi/awesome-ios-chart前端图表: http://www.cnblogs.com/lhb25/p/best-javascript-charting-libraries.html
2016-10-25 13:45:27 505
原创 时间复杂度和空间复杂度
算法复杂度算法复杂度分为时间复杂度和空间复杂度。 其作用: 时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。(算法的复杂性体现在运行该算法时的计算机所需资源的多少上,计算机资源最重要的是时间和空间(即寄存器)资源,因此复杂度分为时间和空间复杂度)。时间复杂度计算方法 1.一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某
2016-10-21 17:17:12 597
原创 iOS - UITableView HeaderView
1.直接拖动ImageView放在TableView,TableView会空出这个ImageView。2.不会悬浮的Header View_leftTableView.tableHeaderView = _fundAbbHeaderView;_rightTableView.tableHeaderView = _fundListHeaderView;3.会悬浮的Header View- (UIVie
2016-10-21 17:05:16 464
转载 iOS - 加密 Base64 MD5 DES AES RSA
一、Base64原理: ● base64的编码都是按字符串长度,以每3个8bit的字符为一组, ● 然后针对每组,首先获取每个字符的ASCII编码, ● 然后将ASCII编码转换成8bit的二进制,得到一组3*8=24bit的字节 ● 然后再将这24bit划分为4个6bit的字节,并在每个6bit的字节前面都填两个高位0,得到4个8bit的字节 ● 然后将这4个8bit
2016-10-18 13:57:24 960
转载 iOS - 视图圆角
一、叠加图片用一个四角为和下一层视图颜色一样的弧度角,当下一层为透明时,无法使用。二、CALayer的cornerRadiuscornerRadius属性影响layer显示的background颜色和前景框border,对layer的contents不起作用。故一个imgView(类型为UIImageView)的image不为空,设置imgView.layer的cornerRadius,是看不出显示
2016-10-18 10:27:25 352
转载 Android - Hybrid
WebView调用Activity方式一写一个 JavaScriptinterface 类,里面实现WebView向Activity 页面跳转public class JavaScriptinterface { Activity mActivity; public JavaScriptinterface(Activity mActivity) { this.mActi
2016-10-12 17:11:21 319
转载 HTTPS协议
一、简介HTTPS即 HTTP + SSL 层。二、HTTPS与HTTP的区别HTTP:当客户端发送请求,那么服务器会直接返回数据。 HTTPS:当客户端第一次发送请求的时候,服务器会返回一个包含公钥的受保护空间(也成为证书),当我们发送请求的时候,公钥会将请求加密再发送给服务器,服务器接到请求之后,用自带的私钥进行解密,如果正确再返回数据。这就是 HTTPS 的安全性所在。
2016-10-11 16:05:49 643
原创 iOS - 多个StoryBoard
StoryBoard 是一个管理View画面的集合。需求:当StoryBoard过大的时候,StoryBoard打开缓慢。 多人协作,StoryBoard难以协作。解决:使用多个StoryBoard。 把功能相近的View放到同一个StoryBoard之中。多个StoryBoard跳转:UIStoryboard *secondStoryBoard = [UIStoryboard storyboa
2016-10-10 21:30:19 325
原创 iOS - 6种常见传值方式比较
常见的6种传值方式1.属性传值 2.方法传值 3.代理传值 4.Block传值 5.单例传值 6.通知传值1.属性传值1.传值第一步就得确定传的属性类型,然后就定义什么样的属性2.在控制器跳转中给属性赋值 TwoViewController *two = [[TwoViewController alloc]init]; two.firstValue = @"ValueToSe
2016-10-10 21:18:07 615
转载 Git和SVN
Git流程图 分布的Remote Server(Index / Stage:暂存区)SVN流程图 一个中心ServerGit和SVN的区别1.GIT是分布式的,SVN不是。 2.GIT把内容按元数据方式存储,而SVN是按文件。 3.GIT分支和SVN的分支不同。 4.GIT没有一个全局的版本号,而SVN有。 5.GIT的内容完整性要优于SVN。(GIT的内容存储使用的是SHA-1哈希算法
2016-10-10 11:47:26 397
转载 iOS - KeyChain
KeyChain原理Keychain是一个安全的存储容器,可以用来为不同应用保存敏感信息比如用户名,密码,网络密码,认证令牌。苹果自己用keychain来保存Wi-Fi网络密码,VPN凭证等等。它是一个sqlite数据库,位于/private/var/Keychains/keychain-2.db,其保存的所有数据都是加密过的。开发者通常会希望能够利用操作系统提供的功能来保存凭证(credentia
2016-10-09 15:58:31 479
原创 iOS - Swipe to pop效果
自动实现iOS 7以上,只要是符合系统的导航结构:1.代码- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen
2016-10-09 11:03:42 317
原创 iOS - 关于header.h和pch
header.h1.引入普遍使用文件/* 第三方头文件 */#import "MBProgressHUD.h"#import "AFNetworking.h"#import "UIImageView+AFNetworking.h"#import "SBJSON.h"#import "MJRefresh.h"#import "ASProgressPopUpView.h"#import "
2016-10-09 10:48:00 5254
原创 iOS - App结构探究
MVC:Model模型+Controlller控制器+View视图Controller管理与跳转工具: 1.UINavigationController+UITabarController 2.UITabarController+UINavigationControllerView构建方式: 视图+布局 1.Storyboard+NSConstraint2.代码+Masonry
2016-10-09 10:41:26 455
原创 iOS - Push - 推送的页面跳转
1.APN推送格式 { “aps”: { “alert”: { “title”:”Hello! :)”, “body”:”App closed…” }, “badge”:1, “sound”:”default” } } 2.应用内消息(透传)推送格式
2016-10-08 23:11:37 510
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人