- 博客(52)
- 收藏
- 关注
转载 通过子类实现KVO,浅析KVO底层原理
通过手动实现KVO,对KVO底层原理有一定认识。KVO只要是通过监听set方法,从而实现对该对象的监听。要监听set方法,有两种实现方式,第一就是使用分类,重写set方法,但是这样就会覆盖父类的set方法,所以不可行,pass掉。第二就是使用子类,把父类的isa指针改为子类。然后调用父类色set方法,最后调用回调方法,该方案可行。首先是注册监听,在调用监听方法的时候,会动...
2018-12-04 11:52:00 212
转载 解决真机objc_msgSend闪退的bug
最近在KVO底层原理中用到了obj_msdSend函数,在模拟器上正常,但是在真机上闪退。首先感谢乌鸦白WHITECROW,在他文章的最后给出了苹果连接,看到苹果的指导瞬间知道该怎么做了。苹果官方的关于真机闪退的解决方法:苹果关于64位崩溃详细说明见此处必须先定义原型才可以使用,这样才不会发生崩溃废话不多说,直接上关键代码一个是调用父类的setName...
2018-12-04 10:59:00 283
转载 使用KVO监听数组的变化
以前有个需求,需要监听数组长度的变化。使用KVO直接监听数组本身,由于数组地址并没有发生改变,所以并不能监听到。试了好多方法,都没有能够实现。知道最近听的一场公开课中,才掌握了正确的监听方法先举个错误的例子@interface ViewController ()@property (nonatomic, strong) NSMutableArray *array;@e...
2018-12-03 15:38:00 388
转载 数字证书浅析以及如何验证证书的可信/合法性
转自http://www.cnblogs.com/hyddd/archive/2009/01/07/1371292.html 最近看会Session hijack的东西,劫持现在已经实现,yahoo等一些没有用Https协议的邮箱被成功地劫持了(迟下发文章),由于对Https不熟悉,所以看了一下为什么Https的会话不能劫持。 本文主要介绍的SSL中的涉及到的"数字证书"这...
2017-06-10 15:32:00 1542
转载 IM开发-XMPP iOS开发(转)
最近项目中需要集成IM功能,市面上有很多的第三方提供im服务,比如环信、融云等,但都有使用限制的地方,如果不使用第三方可以自己去实现一套IM系统,不过一个IM系统涉及到的东西比较多,开发难度较高。另一种选择是使用xmpp,xmpp的优点是有很多的开源实现,比如服务端的ejabberd、Openfire,iOS以及安卓端都很优秀的开源库可以使用,而且传输安全以及扩展性强等(环信也是基于xm...
2017-03-06 22:59:00 147
转载 iOS app性能优化(转)
iPhone上面的应用一直都是以流畅的操作体验而著称,但是由于之前开发人员把注意力更多的放在开发功能上面,比较少去考虑性能的问题,可能这其中涉及到objective-c,c++跟lua,优化起来相对复杂一些,导致应用在比如touch等较低端的产品上,光从启动到进入页面就花了将近一分钟的时间,页面之间的切换没有那种很流畅的感觉,内存也居高不下,比较影响应用的用户体验,所以很有必要进行一些优...
2017-03-06 22:54:00 109
转载 iOS应用程序间共享数据(转)
我们知道iOS由于沙盒的存在,应用程序不能越过自己的区域去访问别的存储空间的内容,不过可能有许多场景我们需要在应用程序之间共享数据,比如多个应用共用用户名密码进行登录等。虽然我们不能直接通过文件系统来分享数据,不过还是有些方法可以实现,为了方便说明,这里同时创建了两个工程Example1和Example2,实现这两个app之间的信息共享,Example1负责写数据,Example2负责读...
2017-03-06 22:43:00 114
转载 解决右滑返回手势和UIScrollView中的手势冲突(转)
iOS系统中,滑动返回手势,其实是一个UIPanGestureRecognizer,系统默认的操作是只有滑动屏幕的左边的某个位置,UIPanGestureRecognizer才会起作用。UIScrollView的滑动手势也是UIPanGestureRecognizer。UIGestureRecognizer和UIView是多对一的关系(具体点这里),UIGestureRecognizer...
2017-03-06 14:03:00 146
转载 (转)iOS被开发者遗忘在角落的NSException-其实它很强大
转载自http://www.jianshu.com/p/05aad21e319eiOS被开发者遗忘在角落的NSException-其实它很强大字数597阅读968评论4喜欢28NSException是什么?最熟悉的陌生人,这是我对NSException的概述,为什么这么说呢?其实很多开发者接触到NSException的频率非常频繁,但很多人都不知道什么是N...
2016-11-21 11:00:00 115
转载 iOS 身份证最后一位是X,输入17位后自动补全X(转)
非原创,转载自http://blog.csdn.net/l2i2j2/article/details/51542028如果身份证最后一位是X,输入17位后自动补全X// textField代理方法- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range repla...
2016-10-10 17:35:00 167
转载 Objective-C中的@dynamic(转)
转自http://blog.csdn.net/haishu_zheng/article/details/12873151Objective-C中的@dynamic一、@dynamic与@synthesize的区别@property有两个对应的词,一个是@synthesize,一个是@dynamic。如果@synthesize和@dynamic都没写,那么默认的就是@s...
2016-06-14 21:41:00 83
转载 使用methodSignatureForSelector与forwardInvocation实现消息转发 (转)
转自:http://blog.sina.com.cn/s/blog_8c87ba3b0102v006.html在给程序添加消息转发功能以前,必须覆盖两个方法,即methodSignatureForSelector:和forwardInvocation:。methodSignatureForSelector:的作用在于为另一个类实现的消息创建一个有效的方法签名,必须实现,并且返回不...
2016-06-14 21:27:00 215
转载 iOS 使用GBK编码的hmacMD5算法
该方法是写在工具类中的,而不是写在NSString的类别中方法的声明:/*** 使用hmac-md5加密** @param clearText 原文* @param secret 秘钥** @return 密文*/+ (NSString *)getHmacmd5:(NSString *)clearText with...
2016-06-13 15:42:00 168
转载 #define和#undefine的用法
#undef将保持已定义状态且在作用域内,直到程序结束或者使用#undef 指令取消定义。预处理器在此程序中,我们将取消在先前程序中对预处理器的定义。1234567891011#include<iostream.h>#include<string.h>#defin...
2016-06-13 15:28:00 4201
转载 iOS RegexKitLite的使用以及常用的正则表达式
1.去RegexKitLite下载类库,解压出来会有一个例子包及2个文件,其实用到的就这2个文件,添加到工程中。2.工程中添加libicucore.dylib frameworks。3.现在所有的nsstring对象就可以调用RegexKitLite中的方法了。NSString *email = @”kkk@aaa.com”;[email isMa...
2016-06-13 15:24:00 86
转载 iOS pop使用代理传值
假如oneViewController页面push到OtherViewController页面,然后你想从OtherViewController页面pop到oneViewController页面的时候需要传值,这时可以使用代理。从OtherViewController中.h文件中定义代理,并设置代理属性,代码如下#import <UIKit/UIKit.h>...
2016-04-08 00:11:00 181
转载 iOS pop使用通知传值
iOS pop回父级页面,使用通知传值输入所要发送的信息 ,同时将label的值通过button方法调用传递,- (IBAction)buttonClick:(id)sender {//添加字典,将label的值通过key值设置传递NSDictionary*dict =[[NSDictionaryalloc]initWithObjectsAndK...
2016-04-07 23:16:00 91
转载 XML解析(转)
非原创,转载自http://my.oschina.net/khakiloveyty/blog/396671xml解析主要可以使用CData,libxml2以及NSXMLParser,以下对各个方法给出了相应的例子:1.CDataXML:1.1.创建FKBook类#import <Foundation/Foundation.h>@inte...
2016-01-14 23:38:00 72
转载 设置两条水纹动画
怎么样实现两条水纹动画呢?代码如下#import "LXHTwoWaterWaveView.h"@interface LXHTwoWaterWaveView (){ UIColor *_waterColor1; UIColor *_waterColor2; float _currentLinePointY1; f...
2015-12-23 00:09:00 71
转载 OC - 31.通过封装的自定义布局快速实现商品展示
概述实现效果设计思路采用MVC架构,即模型—视图-控制器架构使用MJExtension框架实现字典转模型使用MJRefresh框架实现上拉和下拉刷新上拉刷新,加载新的数据下拉刷新,加载更多的数据使用SDWebImage框架加载图片模型商品模型需要包含以下属性/**商...
2015-11-20 13:29:00 129
转载 OC - 30.如何封装自定义布局
概述对于经常使用的控件或类,通常将其分装为一个单独的类来供外界使用,以此达到事半功倍的效果由于分装的类不依赖于其他的类,所以若要使用该类,可直接将该类拖进项目文件即可在进行分装的时候,通常需要用到代理设计模式代理设计模式代理设计模式的组成客户类(通常作为代理)通常委托这是角色来完成业务逻辑真实角色...
2015-11-20 13:27:00 118
转载 OC - 29.自定义布局实现瀑布流
概述瀑布流是电商应用展示商品通常采用的一种方式,如图示例瀑布流的实现方式,通常有以下几种通过UITableView实现(不常用)通过UIScrollView实现(工作量较大)通过UICollectionView实现(通常采用的方式)UICollectionView基础UICollectionView与UI...
2015-11-20 13:25:00 234
转载 OC - 28.模拟时钟
效果图实现思路该示例通过隐式动画实现表盘通过显示在imageView中的一张图片来实现在表盘上绘制(时分秒)三条直线,分别位于不同的图层,且时针位于最下层,秒针位于最上层设置直线为圆角直线的一段位于表盘的圆心通过NSTimer定时器,使不同的图层定时执行对应的动画实现步骤通过storyboard创建表...
2015-11-16 23:02:00 171
转载 OC - 27.CATransition
概述简介CATransition又称转场动画,是CAAnimation的子类,可以直接使用转场动画主要用于为图层提供移入/移出屏幕的动画效果转场动画常见的应用是UINavigationController注意事项转场动画的默认过渡方式为淡出方式(kCATransitionFade)可以使用常量形式或字符串形式给转场动画的...
2015-11-16 22:58:00 107
转载 OC - 26.CAAnimationGroup
概述简介CAAnimationGroup又称组动画或动画组将多个动画放到动画组中,并赋值给layer的animations属性,动画组中所有动画就会并发执行注意事项动画组中的动画不会被压缩,超出动画时长的部分将会被剪掉动画组中的动画的delegate与removedOnCompletion属性将会被忽略由于忽略了remove...
2015-11-16 22:54:00 106
转载 OC - 25.CAKeyframeAnimation
概述简介CAKeyframeAnimation又称关键帧动画CAKeyframeAnimation是抽象类CAPropertyAnimation的子类,可以直接使用通过values与path两个属性指定动画属性注意事项若指定了path属性,则values属性将被忽略CABasicAnimation相当于只有两个关键帧的CAK...
2015-11-15 13:24:00 106
转载 OC - 24.CABasicAnimation
概述简介CABasicAnimation是抽象类CAPropertyAnimation的子类,可以直接使用CABasicAnimation又称基本动画,从fromValue到toValue按照指定的动画属性执行动画注意事项一个动画对象可以同时添加到多个图层上对动画的配置必须放在动画添加到图层之前,否则不会呈现指定的动画效果...
2015-11-15 13:16:00 101
转载 OC - 23.核心动画基础
概述简介核心动画提供了一组非常强大的动画API,通过该组API可以高效的实现绝大部分绚丽的动画效果注意事项核心动画的操作在子线程中执行,不会阻塞主线程核心动画直接作用与CALayer对象上,不是UIView对象上核心动画与UIView动画的区别核心动画不会改变控件的frame属性,显示的只是一种假象UIVie...
2015-11-15 13:13:00 112
转载 OC - 22.隐式动画
简介每个UI控件,默认自动创建一个图层(根图层),即每个UI控件对应于至少一个图层每一个UIView内部都默认关联着一个CALayer,我们可用称这个Layer为Root Layer(根层)所有的非Root Layer,也就是手动创建的CALayer对象,都存在着隐式动画什么是隐式动画?当对非Root Layer的部分...
2015-11-13 13:35:00 210
转载 OC - 21.CALayer核心要点及实例解析
CALayer基础CALayer是每一个UI控件的核心,一个UI控件之所以能显示可以说是CALayer的功劳每一个UI控件默认都为自己创建一个CALayer对象,通过drawRect方法将内容绘制在图层上,然后再显示出来CALayer可以完成很多任务调整UI控件的外观执行动画CALayer与UIView二者可以达到相同的显示...
2015-11-13 13:11:00 107
转载 OC - 20.多图下载
效果图常见问题及解决方法图片重复下载将内存保存在内存或沙盒中。若下载的图片量较大,则会出现UI界面不流畅的现象在子线程中执行下载操作,然后回到主线程成中进行UI界面的刷新。由于cell的循环利用造成的图片显示错乱问题指定刷新表格的indexPath行。subTitle类型的cell,无...
2015-11-13 13:07:00 108
转载 OC - 19.GCD
简介GCD(Grand Center Dispatch)是Apple为多核的并行运算提出的解决方案,纯C语言更加适配多核处理器,且自动管理线程的生命周期,使用起来较为方便GCD通过任务和队列实现多线程功能任务:描述所要执行的操作队列:用来存放所要执行的任务,队列中的任务遵循FIFO(First In First Out)原则GCD的...
2015-11-13 13:00:00 76
转载 OC - 19.pthread和NSThread
简介恰当的使用多线程编程可以提供任务的执行效率和系统资源的利用率多线程是为了提高资源利用率,和应用程序的响应速度,多个线程共享应用资源每个应用程序都有一个主线程,通常用来做UI界面刷新等比较耗时的任务如果放在主线程中,可能会造成主线程的堵塞,无法响应用户操作,通常为耗时任务创建自己的线程,与主线程并发执行多线程编程在一定程度上提高了系统资源...
2015-11-09 09:43:00 78
转载 OC - 18.监听iPhone的网络状态
使用系统的方法来监听网络状态系统的方法是通过通知机制来实现网络状态的监听实现网络状态监听的步骤定义Reachability类型的成员变量来保存网络的状态@property (nonatomic, strong) Reachability *reachability;注册为通知中心的的观察者// 在通知中心注册观察者[[NSNot...
2015-11-09 09:14:00 209
转载 OC 深拷贝与浅拷贝详解
概述拷贝:复制一个与源对象内容相同的对象实现拷贝,需要遵守以下两个协议NSCopyingNSMutableCopying拷贝返回对象的种类可变,mutableCopy消息返回的对象不可变,copy消息返回的对象拷贝的种类浅拷贝,只是复制了一个指向源对象的指针,未创建对象,未分配内存深拷贝,复制了源对象...
2015-11-09 09:07:00 91
转载 OC - 17.AFNetworking原理及常用操作
AFN的六大模块NSURLConnection,主要对NSURLConnection进行了进一步的封装,包含以下核心的类:AFURLConnectionOperationAFHTTPRequestOperationManagerAFHTTPRequestOperationNSURLSession,主要对象NSURLSession对象进行了进...
2015-11-08 11:09:00 211
转载 OC - 16.大文件下载
大文件下载注意事项若不对下载的文件进行转存,会造成内存消耗急剧升高,甚至耗尽内存资源,造成程序终止。在文件下载过程中通常会出现中途停止的状况,若不做处理,就要重新开始下载,浪费流量。大文件下载的解决方案对下载文件进行处理,每下载一点数据,就将数据写到磁盘中(通常是沙盒中),避免在内存累积数据(NSURLConnection下载)使用NS...
2015-11-07 20:14:00 148
转载 OC - 15.NSURLSession与NSURLSessionTask
简介NSURLSession也能完成网络请求NSURLConnection在iOS9中不推荐使用,NSURLSession是iOS9中推荐使用的网络请求方式NSURLSession需要与NSURLSessionTask配合使用NSURLSession的简单使用步骤创建请求任务执行请求任务通常使用NSURLSessionTask的子类...
2015-11-07 17:02:00 156
转载 OC - 14.NSOperation与NSOperationQueue
简介通过NSOperation与NSOperationQueue的组合也能实现多线程通常将任务封装成NSOperation对象,并将对象添加到NSOperationQueue中实现NSOperationNSOperation是一个抽象类,不能用来直接封装操作,通常使用它的子类来封装操作若不将NSOperation对象添加到NSOper...
2015-11-07 13:05:00 70
转载 OC - 13.数据解析(JSON与XML)
##数据交互格式服务器返回给用户的数据,通常是以下两种方式:JSONXMLJSON一种轻量级的数据数据格式,体积比XML小,是服务器返回给移动端通常采用的格式用使用JSON文件中的数据,需要对其进行解析,苹果的NSJSONSerialization解析性能最好iOS中的JSON文件解析,是将其转换成OC对象,如下:大括号{}...
2015-11-04 14:14:00 130
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人