iOS
文章平均质量分 88
WoodBear009
这个作者很懒,什么都没留下…
展开
-
Swift3.0学习实践-一个简单的画板(七色轨迹、可撤销、可清除、带橡皮擦)
写着玩儿的小程序,继续学习swift,运行效果+代码+知识点总结运行效果: 代码:Canvas类:画布,画图板状态管理、交互、处理手势class Canvas:UIView{ //负责线条的生成、操作与管理 let pathCreator:PathCreator //是否处于擦除状态 var isInErasering:B原创 2017-02-09 16:12:43 · 3833 阅读 · 8 评论 -
Xcode调试之View Memory(查看内存)
借着最近在工作中遇到的一个问题,简单来讲讲如何使用xcode的view memory功能来查看数据,排查问题。问题描述: 和服务器进行socket通信,但客户端这边发现服务器发过来的一个信令在反解、结构化后,有一个字段的数值和约定的对应不上,双方都先排查了一下各自代码,都没有发现明显的问题,导致现在无法定位问题引入的源头。于是决定客户端这边拿到反解、结构化之前,服务器发过来的原始数据...原创 2019-01-25 16:07:32 · 25439 阅读 · 2 评论 -
socket编程[oc](逻辑数据的处理)
之前写了一下socket编程中半包、粘包的处理点击打开链接,这篇再写写另一个相关问题,逻辑数据的处理物理数据包与逻辑数据包: 首先说明的是,socket传输中物理数据包、逻辑数据包的概念是我自己臆想、“定义”的,主要是方便我后面去描述问题.那么什么是我所说的物理数据包与逻辑数据包呢? 举个例子,假如我想传送一段文本“这篇博客写的是socket编程[oc](逻辑数据的处理)”,可能因原创 2017-03-09 13:09:15 · 3161 阅读 · 3 评论 -
socket编程[oc](粘包、半包处理)
在做socket编程时,如果是做tcp连接,那就不可避免的会遇到粘包与半包的问题,粘包就是多组数据被一并接收了,粘在了一起,无法做划分;半包就是有数据接收不完整,无法处理。要解决粘包、半包的问题,一般在设计数据(消息)格式时会约定好一个字段专门用于描述数据包的长度,这样就使数据有了边界,依靠这个边界,就能把每组数据划分出来,数据不完整时也能获知数据的缺失。原创 2016-11-24 15:29:46 · 3592 阅读 · 1 评论 -
CFRunLoop源码分析笔记
之前看过不少别人博客里对CFRunLoop源码的分析,但自己一直没有去看过,今天回顾相关知识时,决定自己去看看相关的源码实现,确实又有了一些新的认识与收获.CFRunLoopRun、CFRunLoopRunInMode首先是两个简单的入口函数//两个函数分别是让runloop跑在kCFRunLoopDefaultMode下,与让runloop跑在指定mode下//两个函数区别不...原创 2017-03-12 22:15:11 · 2747 阅读 · 0 评论 -
iOS runtime forwardInvocation一些总结
代码:TestModel- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector { if(aSelector == @selector(testMethod)) { return [NSMethodSignature signatureWithObjCTypes:"v@:"];原创 2017-01-19 10:41:34 · 4324 阅读 · 1 评论 -
《Effective Objective-C 2.0编写高质量iOS与OS X代码的52个有效方法》读书笔记(上)
1.OC对象所占内存总是分配在"堆"中,而绝不会分配在"栈"中,不能再栈中分配OC对象。"栈"中对象借助栈帧进行维护,"堆"中对象的管理借助引用计数机制.-(NSMutableArray *)test{ //ary指针本身在栈上,但分配的数组对象在堆上,这也就解释了,为什么函数返回后,ary会随着栈帧弹出而被释放, //但外部依然能使用NSMutableArray,因为NS原创 2017-04-05 10:10:57 · 661 阅读 · 0 评论 -
《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 · 596 阅读 · 0 评论 -
记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 · 3512 阅读 · 0 评论 -
isa、class、meta-class白话总结
之前看过不少关于runtime的相关文章,其中对于isa、class、meta-class概念的描述都是比较抽象、晦涩的,虽然理解这些概念在实践中不一定能用的上,但既然学习了runtime,还是应该尽可能的把这些相关概念弄明白,下面,用我自己不太严谨的白话,粗略总结梳理一下我对这部分的理解与体会。对象与类,面向对象编程中最基本的概念,对象就是具体的实例,类则是一个抽象的概念。而在OC中类则不仅原创 2017-01-06 10:38:04 · 2753 阅读 · 0 评论 -
通过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 · 2721 阅读 · 0 评论 -
ios _开头命名规范
在ios代码里,经常会看见用这种格式:_变量名 去命名一个变量,为什么? 其实又是个基础概念知识,但发现实际上好多人好像却并不明了其中原由,只是看好多人都这么写,也就这么写了,下面我就简单说一下这么做的原因。刚接触ios开发时,我写的代码一般是这样的@interface Person : NSObject@property (nonatomic,copy) NSString *原创 2016-12-06 19:13:51 · 471 阅读 · 0 评论 -
runtime应用一例
看到有人在论坛问:自己的应用已经开发完了,老板突然说想让应用中的button点击时要带震动效果。手机震动直接调用 AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);即可但是如果要把这句话一个一个的加到所有but的点击回调方法里,未免工作量太“大”了,而且也比较“笨”,我想了想,觉得利用runtime机制,可以比较好的解决这个问题原创 2016-12-05 21:12:21 · 559 阅读 · 0 评论 -
Realm的一些特性介绍
之前做ios开发,数据存储这块基本上用的都是sqllite,15年下半年在做一个产品时,因为时间比较宽裕,便决定在项目中尝试使用realm数据存储框架。之前在做技术调研时,了解到了很多它的优点,速度快、类似core data的机制、文档详尽、简单易用等。而整个项目下来,也确实感觉到了realm的不负众望,优点很多:开发效率得到了大大提高(省去了数据模型与表存储之间转化的很多工作);框架虽然推出不久,但功能覆盖已经趋于完备了,基本都满足了我的需求;有一个十分好用的可视化数据库查看工具;最终的运行表现也很让人满原创 2016-12-02 17:11:04 · 1984 阅读 · 0 评论 -
NSTimer与RunLoop
今天在论坛里看见有人提出这样一个问题:界面上有个scrollView 每次滑动的时候,NSTimer就停止了,为什么?看了下,下面的回复不少,但我感觉都没有真正解释清其中的问题,下面我来试着写一下我个人的理解(我基本上都是通过下面这篇文章学习的,有兴趣更深入、详细了解runloop的同学可以看看点击打开链接)首先,一个runloop下会包含很多个model,每个原创 2016-12-01 10:02:58 · 722 阅读 · 0 评论 -
iOS10 Callkit框架整合总结
前不久苹果推出的callkit framework简直就是voip类应用的福音啊,一下把应用的体验提升到了系统级别的高度,加上之前推出的pushkit,形成了一套完整的voip解决方案。正好我们的产品就是一个类voip应用,当然要把callkit加进去,不过callkit刚刚推出,网上的资料实在是少,甚至连官方的api文档里都是大片空白,下面记录一下我对整合callkit的一些总结与理解,也算丰富原创 2016-11-30 16:52:43 · 5563 阅读 · 0 评论 -
swift3 模型转字典(JSON)
项目中最近需要将一个复杂的对象转成JSON,于是就利用Mirror写了一个模型转字典的通用方法,应该可以满足大部分使用场景下的需求了函数实现:func convertToDictNesting(obj: Any, remainFeild: [String]? = nil, replace: (((label: String, value: Any)) -> (String, Any))原创 2017-08-10 17:21:48 · 1817 阅读 · 0 评论