- 博客(25)
- 收藏
- 关注
原创 iOS Socket编程入门指北
Socket收发的消息我们如何区分消息类型呢?如何知道每一个包的大小呢?Protocol Buffer(Protobuf的全称)是一种支持多平台、多语言、可扩展的的数据序列化机制,相较于XML来说,Protobuf更小更快更简单,支持自定义的数据结构,用Protobuf编译器生成特定语言的源代码,如C++、Java、Python,目前Protobuf对主流的编程语言都提供了支持,非常方便的进行序列化和反序列化。Protobuf官网链接。...
2022-08-07 22:15:10 1018 1
原创 iOS自建DNS之后对IP+Port测速
iOS自建DNS之后对IP+Port测速传统的Local DNS域名解析的弊端通过域名拿到IP之后,如何选用最快的一条链路传统的Local DNS域名解析的弊端客户端默认使用运营商的Local DNS来进行域名递归解析,然后将解析后的结果返回给客户端。这个过程当中经常会出现域名劫持,导致出现很多意想不到的结果。而且传统的 DNS 有很多问题,例如解析慢、更新不及时。因为缓存、转发、NAT问题导致客户端误会自己所在的位置和运营商,从而影响流量的调度。为了解决这个弊端,就得自建域名解析服务来绕过本地的域名
2021-11-22 13:47:36 3821 1
原创 APNS和Background Fetch相关问题总结
APNS和Background Fetch相关问题总结 1.1 Normal Push Notification1.1.1 概述1.1.2 deviceToken相关1.1.3 推送feedback接口1.1.4 badge点击不消失的问题1.1.5 定制push notification的推送时间段1.1.6 push notification的功能扩展1.1.7 收不到push notification的情况总结1.1.8 测试工具1.2 Silent Push Notification1.2.1 概述
2020-05-19 12:38:20 2735
原创 Mars iOS开发中需要注意事项
前一段时间公司项目IM底层改成用Mars来开发,Mars客户端是基于C++来开发的,在刚开始使用的过程中也遇到了一些问题,现在总结如下:对于客户端发起的心跳,服务器必须要有响应回包,否则长连接很快就会断掉.对于客户端通过Mars发出去的请求,如果服务器端响应回包时必须要有seq(也可以叫其它名字),并且该字段的值要与客户端发过去的值相同.客户端发出去的包不一定需要服务器端的回应,可能通过
2018-01-08 17:06:33 1706 2
原创 NSOperationQueue 设置maxConcurrentOperationCount = 1,就是串行队列了吗?
在iOS多线程开发中,一般常用三种方式进行:NSThreadGCDNSOperationQueue配合NSOperation子类使用具体这三类多线程在iOS中是如何开发的在这里就不多说了,不了解的可以上官网或者百度搜索.在GCD中我们可以创建串行队列,并且加到串行队列上的操作是依次进行的,即先加进去的代码先执行,后加进去的代码后执行.细心的同学可能也发现了在NSOperationQueue中
2017-09-29 10:31:12 4996 2
原创 简单实现iOS通知中心的功能
iOS自带的NSNotification在日常使用中如果注册完不removeObserver的话会引发crash,开发者在开发过程中往往由于自己的疏忽而忘记写removeObserver,尤其在代码重构过程中很容易忽略掉.那么有没有好的办法自己实现一套通知中心的功能,而不用在observer的dealloc函数中removeObserver呢?答案是有的,iOS开发中经常用weak来修饰类的属性,当
2017-09-15 10:59:54 2213
原创 iOS单例的创建与销毁
在iOS的日常开发经常要用到单例,单例一经创建就不会销毁,直到APP被杀掉的时候单例占用的空间才得以释放.现在比如我有一个自行车类,并且把它写成一个单例(共享自行车,呵呵),代码如下:#import "Bike.h"@implementation Bike+ (instancetype)sharedBike{ static Bike *bike; static dispatch_o
2017-08-24 18:42:27 3877
原创 cocoapods 常用命令总结
1.pod lib create; 创建一个pod库,可以选择是否带一个Example工程;2.pod init;在你的工程目录下执行之后,工程目录之下会多一个podfile文件;3.pod install;在工程第一次使用或者中间有添加,删除,更新库的时候使用;4.pod instal --verbose --no-repo-update;执行pod install 但不升级本地co
2017-08-24 16:32:29 678
原创 iOS pod库包含MRC的文件
在我们iOS开发过程中,碰到的大部分文件都是基于ARC内存管理的,但也免不了用到一些三方的MRC的代码,这里介绍两种方法来编写包括MRC文件的.podspec文件.1).在podspec中指定requires_arc:false,同时指定requires_arc的文件,eg: s.requires_arc = false s.requires_arc = ['EL
2017-08-16 13:36:04 5451
原创 UITableView通过AutoLayout自动计算行高
为了演示简单,cell中我们只包含了一个view和一个label,针对iOS8之前的iOS系统,我们需要进行如下设置: self.tableView = [[UITableViewalloc] initWithFrame:CGRectZerostyle:UITableViewStylePlain]; self.tableView.dataSource =
2017-07-24 17:15:37 568
转载 即时通讯下数据粘包、断包处理实例(基于CocoaAsyncSocket)
本文转自:http://www.jianshu.com/p/2e16572c9ddc?utm_source=desktop&utm_medium=timeline前言本文旨以实例的方式,使用CocoaAsyncSocket这个框架进行数据封包和拆包。来解决频繁的数据发送下,导致的数据粘包、以及较大数据(例如图片、录音等等)的发送,导致的数据断包。本文实例Github
2017-03-29 11:07:09 449
转载 深入理解Objective-C:Category
本文转自:http://tech.meituan.com/DiveIntoCategory.html摘要无论一个类设计的多么完美,在未来的需求演进中,都有可能会碰到一些无法预测的情况。那怎么扩展已有的类呢?一般而言,继承和组合是不错的选择。但是在Objective-C 2.0中,又提供了category这个语言特性,可以动态地为已有类添加新行为。如今category已经遍布于Objec
2017-03-27 17:39:06 352
转载 CocoaPods私有库配置笔记
本文转自:http://www.jianshu.com/p/4b63dfbd8be7前情提要公司项目一直在用CocoaPods管理第三方包,自己也想着将项目中的公用模块抽离出来独立的包。所以研究了一下。准备工作github创建私有库 如testSpecs.gitpod repo add testSpecs https://github.com/qgg/testS
2017-03-27 10:19:24 292
转载 深入分析 Objective-C block、weakself、strongself 实现原理
本文转自:http://www.jianshu.com/p/a5dd014edb13Block是我们在日常OC编码中经常使用的特性,它可以非常便捷高效的编写和组织代码,可以让异步调用的代码更加的精炼易读。但是在日常开发过程中我们大部分情况都是写着教科书一般的代码来确保编码的正确,下面我们通过block的源码分析来看看block的实现原理。文章有点长,请耐心点哦,相信你一定有所收获的。正
2017-03-27 10:15:00 1060
转载 Objective-C Autorelease Pool 的实现原理
本文转自:http://www.jianshu.com/p/d6687291e486内存管理一直是学习Objectie-C的重点和难点之一,尽管现在已经是ARC时代了,但是了解Objective-C的内存管理机制仍然是十分必要的。其中,弄清楚autorelease的原理更是重中之重,只有理解了autorelease的原理,我们才算是真正了解了Objective-C的内存管理机制。
2017-03-23 15:45:44 578
转载 IOS 断点续传原理浅析
本文转自:http://www.jianshu.com/p/de263da8cdb0断点续传概述:断点续传就是从文件上次中断的地方开始重新下载或上传数据,当下载大文件的时候,如果没有实现断点续传功能,那么每次出现异常或者用户主动的暂停,都会去重头下载,这样很浪费时间。所以断点续传的功能就应运而生了在说IOS断点续传之前,下面来简单介绍 HTTP 断点续传的原理其
2017-03-23 15:34:09 953
转载 iOS KVO 实现原理
本文转自:https://www.mikeash.com/pyblog/friday-qa-2009-01-23.htmlWelcome to the first Friday Q&A; of the new Presidential administration. Unlike Mr. Obama, I'm afraid of change and so this week's edit
2017-03-23 15:05:18 536
原创 iOS Socket提高APNs消息推送触达率
iOS APNs消息推送一直是各APP打造的一个亮点,用于把一些实时,重要的消息及时推送给客户。但是现实开发时,APNs服务器并不保证消息能及时送达APP端,这其中由网络原因,苹果APNs本身也会有一定的算法(猜测),iOS系统的的一些限制(iOS8之前不包含iOS8实际推送内容大小为256B,iOS8.0之后iOS9.0之前推送内容大小为2K,iOS9.0及以后推送内容为4K)等诸多原因,导致消
2017-02-23 10:42:34 2359
原创 iOS中AES192 CBC PKCS7Padding 解码
1.什么是AES?AES(Advanced Encryption Standard,AES)高级加密标准,是美国联邦政府采用的一种区块加密标准。这个标准用来替换原来的DES,该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,所以又称高级加密标准Rijndael加密法。2.什么是AES128,AES192,AES256?AES采用的是对称加密,密钥长度支持
2017-02-23 08:57:57 1743
原创 iOS访问类的私有成员变量及私有方法
本文主要介绍一下如何访问类的私有成员变量以及类的私有方法,这里以下面这个类来举例:@interface HomeController : UIViewController { NSString *name2;}@property (nonatomic,copy) NSString *name3;@end
2016-08-19 22:38:29 6845
原创 iOS 通过运行时获取ivars,properties,class methods以及instance methods
工程代码详细参考我的github:https://github.com/pwf2006/iOS-RunTime运行时获取类的properties//获取类的属性 - (void)getPropertyList { //属性个数 unsigned int count; objc_property_t *properties = cl
2016-08-17 10:19:32 1105
原创 iOS push过程中常见的问题
iOS中消息推送走的是苹果的APNS,关于其工作原理网上一搜一大把,大家可自行从网上搜索.DeviceToken在使用过程中的注意点:在iOS7之前单一环境下(Develop/Distribution)每一个设备一个DeviceToken;iOS7及以上单一环境下(Develop/Distribution),一个bundleId对应一个DeviceToken. iOS收不到push的情...
2016-08-16 22:02:19 1529
原创 Asyncsocket如何把Objc的类型转成NSData类型
计算机中对数据的存储有两种方式:小端存储(Little-Endian)就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端。大端存储(Big-Endian)就是高位字节排放在内存的低地址端即该值的起始地址,低位字节排放在内存的高地址端。讲到小端存储和大端存储就不得不说两个概念:主机字节序和网络字节序.网络传输的数据一般是字节流,而且是大端存储的形式,而自己机器采用的存
2016-08-15 17:50:05 734
原创 Asyncsocket常见错误码
Asyncsocket在app中通过保持长链接来实时接收和发送服务器端的一些数据,在实际使用过程中socket连接断开时经常会报一些错误,现就一些常见的错误进行简单的解读:1.Code = 8 "nodename nor servname provided, or not known"通常是由于没有网络,比如数据或者wifi处于关闭状态或者设备处于飞行模式下,此时socket连接一般会
2016-08-15 15:07:11 6202
原创 Asyncsocket 使用总结
socket使用注意事项1. timeout socket会断掉,需要重连2. 用AsyncSocket连接服务器时,不管服务器有没有开,[client connectToHost:hostIP onPort:hostPort error:&err] 这一句一直返回YES,所以判断服务器有没有连接成功3. 当读的时候,需要判断长度是否足够,如果不够需要再次设置[soc
2016-08-05 17:57:42 1421
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人