自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (1)
  • 收藏
  • 关注

原创 Xcode调试之View Memory(查看内存)

  借着最近在工作中遇到的一个问题,简单来讲讲如何使用xcode的view memory功能来查看数据,排查问题。问题描述:  和服务器进行socket通信,但客户端这边发现服务器发过来的一个信令在反解、结构化后,有一个字段的数值和约定的对应不上,双方都先排查了一下各自代码,都没有发现明显的问题,导致现在无法定位问题引入的源头。于是决定客户端这边拿到反解、结构化之前,服务器发过来的原始数据...

2019-01-25 16:07:32 25289 2

原创 Swift柯里化

Curry  今天同事推荐了一个swift柯里化相关的库,点击打开链接,打开看了看具体实现,瞬间不明觉厉,于是想好好研究研究他是怎么写的,顺便加强一下对柯里化的理解public func curry(_ function: @escaping (A) -> B) -> (A) -> B { return { (a: A) -> B in function(a) }}pub

2017-09-27 11:43:59 749

原创 swift3 模型转字典(JSON)

项目中最近需要将一个复杂的对象转成JSON,于是就利用Mirror写了一个模型转字典的通用方法,应该可以满足大部分使用场景下的需求了函数实现:func convertToDictNesting(obj: Any, remainFeild: [String]? = nil, replace: (((label: String, value: Any)) -> (String, Any))

2017-08-10 17:21:48 1796

原创 闭包与block-捕获变量差异

起初在学习使用swift时,对闭包的变量捕获部分并没有认真的去了解,想当然的认为应给和OC中的block捕获规则一样,结果最近在使用中产生了错误,回过头来再去了解时,发现了二者的捕获规则有着很大的差异,这里只说现象,提醒大家在使用中多加注意,至于原因,有兴趣的可以分别去具体了解一下闭包与block的变量捕获机制.  先看OC代码 TestModel *test = [[TestMod

2017-05-31 17:01:40 894

原创 《Effective Objective-C 2.0编写高质量iOS与OS X代码的52个有效方法》读书笔记(下)

1.为避免在不经意间使用了无效对象,一般在release之后会清空指针,=nil;2.通常利用弱引用或者“手动”解除引用的方式破坏循环引用。3.ARC下,规定以alloc、new、copy、mutabelCopy开头方法,调用者要负责返回对象的释放;反之,返回的对象会自动释放,调用者要注意对返回值的保留。4.属性设置的正确流程:保留新值,释放旧值,更新变量。5.ARC下deallo

2017-04-06 10:44:46 589

原创 《Effective Objective-C 2.0编写高质量iOS与OS X代码的52个有效方法》读书笔记(上)

1.OC对象所占内存总是分配在"堆"中,而绝不会分配在"栈"中,不能再栈中分配OC对象。"栈"中对象借助栈帧进行维护,"堆"中对象的管理借助引用计数机制.-(NSMutableArray *)test{ //ary指针本身在栈上,但分配的数组对象在堆上,这也就解释了,为什么函数返回后,ary会随着栈帧弹出而被释放, //但外部依然能使用NSMutableArray,因为NS

2017-04-05 10:10:57 646

原创 CFRunLoop源码分析笔记

之前看过不少别人博客里对CFRunLoop源码的分析,但自己一直没有去看过,今天回顾相关知识时,决定自己去看看相关的源码实现,确实又有了一些新的认识与收获.CFRunLoopRun、CFRunLoopRunInMode首先是两个简单的入口函数//两个函数分别是让runloop跑在kCFRunLoopDefaultMode下,与让runloop跑在指定mode下//两个函数区别不...

2017-03-12 22:15:11 2730

原创 socket编程[oc](逻辑数据的处理)

之前写了一下socket编程中半包、粘包的处理点击打开链接,这篇再写写另一个相关问题,逻辑数据的处理物理数据包与逻辑数据包:  首先说明的是,socket传输中物理数据包、逻辑数据包的概念是我自己臆想、“定义”的,主要是方便我后面去描述问题.那么什么是我所说的物理数据包与逻辑数据包呢?  举个例子,假如我想传送一段文本“这篇博客写的是socket编程[oc](逻辑数据的处理)”,可能因

2017-03-09 13:09:15 3150 3

原创 借鉴Alamofire解决异步回调问题(Swift)

遇到的问题  今天在做一个swift练习demo时遇到了这样一个问题,我需要实现一个gps定位功能,于是封装一个LocationManager类去处理定位相关的逻辑,外部调用者需要获取定位信息时,直接调用LocationManager提供的getCurrentGpsInfo方法即可获取到当前的gps信息。  getCurrentGpsInfo函数内部实现大概是这样的

2017-03-03 14:25:19 7690

原创 flatMap与Monad(Swift)

最近在看一些函数式编程方面的东西,有一个概念被反复的提及:Monad.为了弄明白这个词的含义,我看了不少的文章和视频,但是看了半天也基本是云里雾里的,似懂非懂的,感觉十分抽象。不过我注意到了一点,很多地方都提到:如果一个类型实现了flatmap,那它则具有Monad的性质。由此可见,flatmap似乎可以帮助我去理解Monad的概念,而正好,Swift中Array就支持flatmap,实践出真知,

2017-02-23 16:27:50 844

原创 Swift3.0学习实践-一个简单的画板(七色轨迹、可撤销、可清除、带橡皮擦)

写着玩儿的小程序,继续学习swift,运行效果+代码+知识点总结运行效果:           代码:Canvas类:画布,画图板状态管理、交互、处理手势class Canvas:UIView{ //负责线条的生成、操作与管理 let pathCreator:PathCreator //是否处于擦除状态 var isInErasering:B

2017-02-09 16:12:43 3805 8

原创 iOS runtime forwardInvocation一些总结

代码:TestModel- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector { if(aSelector == @selector(testMethod)) { return [NSMethodSignature signatureWithObjCTypes:"v@:"];

2017-01-19 10:41:34 4304 1

原创 记iOS扩展(匿名类别)使用引发的崩溃

扩展(匿名类别)是在iOS开发中经常用到的技巧,一般通常的用法是这样:.h文件@interface JH_WebViewController : JHBaseViewController-(id)initWithUrl:(NSString *)url;@end.m文件#import "JH_WebViewController.h"@interface JH_WebV

2017-01-11 12:32:32 3504

原创 isa、class、meta-class白话总结

之前看过不少关于runtime的相关文章,其中对于isa、class、meta-class概念的描述都是比较抽象、晦涩的,虽然理解这些概念在实践中不一定能用的上,但既然学习了runtime,还是应该尽可能的把这些相关概念弄明白,下面,用我自己不太严谨的白话,粗略总结梳理一下我对这部分的理解与体会。对象与类,面向对象编程中最基本的概念,对象就是具体的实例,类则是一个抽象的概念。而在OC中类则不仅

2017-01-06 10:38:04 2743

原创 通过NSURLSessionConfiguration对类属性property(class)的思考

在查看NSURLSessionConfiguration的头文件时看到了如下的定义#if FOUNDATION_SWIFT_SDK_EPOCH_AT_LEAST(8)@property (class, readonly, strong) NSURLSessionConfiguration *defaultSessionConfiguration;@property (class, read

2016-12-13 18:01:16 2704

原创 ios _开头命名规范

在ios代码里,经常会看见用这种格式:_变量名 去命名一个变量,为什么? 其实又是个基础概念知识,但发现实际上好多人好像却并不明了其中原由,只是看好多人都这么写,也就这么写了,下面我就简单说一下这么做的原因。刚接触ios开发时,我写的代码一般是这样的@interface Person : NSObject@property (nonatomic,copy) NSString *

2016-12-06 19:13:51 467

原创 runtime应用一例

看到有人在论坛问:自己的应用已经开发完了,老板突然说想让应用中的button点击时要带震动效果。手机震动直接调用 AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);即可但是如果要把这句话一个一个的加到所有but的点击回调方法里,未免工作量太“大”了,而且也比较“笨”,我想了想,觉得利用runtime机制,可以比较好的解决这个问题

2016-12-05 21:12:21 558

原创 Realm的一些特性介绍

之前做ios开发,数据存储这块基本上用的都是sqllite,15年下半年在做一个产品时,因为时间比较宽裕,便决定在项目中尝试使用realm数据存储框架。之前在做技术调研时,了解到了很多它的优点,速度快、类似core data的机制、文档详尽、简单易用等。而整个项目下来,也确实感觉到了realm的不负众望,优点很多:开发效率得到了大大提高(省去了数据模型与表存储之间转化的很多工作);框架虽然推出不久,但功能覆盖已经趋于完备了,基本都满足了我的需求;有一个十分好用的可视化数据库查看工具;最终的运行表现也很让人满

2016-12-02 17:11:04 1967

原创 NSTimer与RunLoop

今天在论坛里看见有人提出这样一个问题:界面上有个scrollView 每次滑动的时候,NSTimer就停止了,为什么?看了下,下面的回复不少,但我感觉都没有真正解释清其中的问题,下面我来试着写一下我个人的理解(我基本上都是通过下面这篇文章学习的,有兴趣更深入、详细了解runloop的同学可以看看点击打开链接)首先,一个runloop下会包含很多个model,每个

2016-12-01 10:02:58 714

原创 iOS10 Callkit框架整合总结

前不久苹果推出的callkit framework简直就是voip类应用的福音啊,一下把应用的体验提升到了系统级别的高度,加上之前推出的pushkit,形成了一套完整的voip解决方案。正好我们的产品就是一个类voip应用,当然要把callkit加进去,不过callkit刚刚推出,网上的资料实在是少,甚至连官方的api文档里都是大片空白,下面记录一下我对整合callkit的一些总结与理解,也算丰富

2016-11-30 16:52:43 5543

原创 socket编程[oc](粘包、半包处理)

在做socket编程时,如果是做tcp连接,那就不可避免的会遇到粘包与半包的问题,粘包就是多组数据被一并接收了,粘在了一起,无法做划分;半包就是有数据接收不完整,无法处理。要解决粘包、半包的问题,一般在设计数据(消息)格式时会约定好一个字段专门用于描述数据包的长度,这样就使数据有了边界,依靠这个边界,就能把每组数据划分出来,数据不完整时也能获知数据的缺失。

2016-11-24 15:29:46 3579 1

原创 python爬虫学习(下)——爬虫代码实现

上篇分析出了数据获取的完整路径,并在此过程中对整个业务流程以及数据特点都有了一定的了解,下面就开始进入正式的编码阶段整个业务准备简单化分成以下几个类:Class Car:汽车模型

2016-11-12 20:02:15 677

原创 PIL安装指导(mac环境)

最近准备学习一下利用PIL进行简单的图像处理,PIL的安装坑不少,搜索一下,网上有很多文章都是讲PIL安装的,但问题点比较零散,且内容已经比较陈旧了,有的方法现在也已经行不通了,下面将我此次的安装过程进行一下总结,希望能帮助后面的人解决类似问题安装环境:mac os X EI Capitan 10.11.6Python 2.7.10PyCharm 2016.2.3

2016-11-12 12:22:46 1974

原创 python爬虫学习(上)——目标网站分析

平日没事喜欢了解一下与汽车相关的知识与讯息,经常逛汽车之家,一直觉得汽车之家的车型检索太过“简单”,只能满足一般大部分用户的检索需求,比如6缸车、非承载车身、非双离合、前后独立悬挂、带机械锁的.....等等这些搜索条件都是不支持的,于是就想写个爬虫把站上的数据都爬回来,数据有了,我自己想怎么处理,想怎么搜就都可以了说干就干,使用比较流行的python编写,之前没接触过,借这个机会正好学

2016-11-11 15:53:09 2829

jenkins用户使用手册

jenkins用户使用手册,Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

2019-04-08

空空如也

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

TA关注的人

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