![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS高级
文章平均质量分 90
focusjava
这个作者很懒,什么都没留下…
展开
-
Objective-C Runtime 运行时之三:方法与消息
前面我们讨论了Runtime中对类和对象的处理,及对成员变量与属性的处理。这一章,我们就要开始讨论Runtime中最有意思的一部分:消息处理机制。我们将详细讨论消息的发送及消息的转发。不过在讨论消息之前,我们先来了解一下与方法相关的一些内容。基础数据类型SELSEL又叫选择器,是表示一个方法的selector的指针,其定义如下:1typede原创 2016-03-14 13:44:00 · 385 阅读 · 0 评论 -
AFNetworking源码解析<三>
续AFNetworking源码解析、 本篇说说安全相关的AFSecurityPolicy模块,AFSecurityPolicy用于验证HTTPS请求的证书,先来看看HTTPS的原理和证书相关的几个问题。HTTPSHTTPS连接建立过程大致是,客户端和服务端建立一个连接,服务端返回一个证书,客户端里存有各个受信任的证书机构根证书,用这些根证书对服务端 返回的证书进行验证,经验证如果证原创 2014-09-24 10:40:07 · 1223 阅读 · 0 评论 -
AFNetworking2.0源码解析
原文最近看AFNetworking2的源码,学习这个知名网络框架的实现,顺便梳理写下文章。AFNetworking的代码还在不断更新中,我看的是AFNetworking2.3.1。本篇先看看AFURLConnectionOperation,AFURLConnectionOperation继承自NSOperation,是一个封装好的任务单元,在这里构建了NSURLConnecti原创 2014-09-24 10:37:35 · 694 阅读 · 0 评论 -
KVC/KVO原理详解及编程指南
前言:1、本文基本不讲KVC/KVO的用法,只结合网上的资料说说对这种技术的理解。2、由于KVO内容较少,而且是以KVC为基础实现的,本文将着重介绍KVC部分。一、简介KVC/KVO是观察者模式的一种实现,在Cocoa中是以被万物之源NSObject类实现的NSKeyValueCoding/NSKeyValueObserving非正式协议的形式被定义为基础框架的一部分。原创 2014-09-01 16:59:31 · 552 阅读 · 0 评论 -
iOS runtime (3)
11、系统类的方法实现部分替换- (void) methodExchange { Method m1 = class_getInstanceMethod([NSStringclass],@selector(lowercaseString)); Method m2 = class_getInstanceMethod([NSStringclass],@selector(up原创 2014-08-27 18:07:49 · 475 阅读 · 0 评论 -
iOS runtime (4)
用C代替OC:#import #import #import extern int UIApplicationMain (int argc,char *argv[],void *principalClassName,void *delegateClassName);struct Rect { float x; float y;原创 2014-08-27 18:08:24 · 460 阅读 · 0 评论 -
iOS runtime (2)
一些公用类:@interface ClassCustomClass :NSObject{ NSString *varTest1; NSString *varTest2; NSString *varTest3;}@property (nonatomic,assign)NSString *varTest1;@property (nonatomic,原创 2014-08-27 18:07:17 · 475 阅读 · 0 评论 -
iOS runtime (1)
一些公用类:@interface CustomClass : NSObject- (void) fun1;@end@implementation CustomClass- (void) fun1{ NSLog(@"fun1");}@end@interface TestClass : NSObject@end@implementati原创 2014-08-27 18:06:28 · 495 阅读 · 0 评论 -
关键帧动画CAKeyframeAnimation
之所以叫做关键帧动画是因为,这个类可以实现,某一属性按照一串的数值进行动画,就好像制作动画的时候一帧一帧的制作一样。一般使用的时候 首先通过 animationWithKeyPath 方法 创建一个CAKeyframeAnimation实例, CAKeyframeAnimation 的一些比较重要的属性1. path这是一个 CGPathRef 对象,默认是空的,当我们创建原创 2014-06-23 12:21:20 · 466 阅读 · 0 评论 -
Core Animation之基础介绍
Core Animation可以翻译为核心动画,它为图形渲染和动画提供了基础。使用核心动画,你只需要设置一些参数比如起点和终点,剩下的帧核心动画为你自动完成。核心动画使用硬件加速,不用消耗cpu资源。其实平时咱们开发的iOS应用都在有意无意的使用了核心动画。动画不会替代View,而是和View一起提供更好的性能。Core Animation通过缓存view上的内容到bitmap,这样bitmap就原创 2014-06-17 16:32:00 · 457 阅读 · 0 评论 -
Core Animation之简单使用CALayer
上篇Core Animation之基础介绍提到CALayer的重要性,那咱们就试试CALayer如何使用。1、什么是CALayerCALayer是个简单的类,它是用来在屏幕上显示内容展示的矩形区域。 靠,这是不描述UIView的话吗?其实他们是有区别的。每个UIView都有一个根CALayer,UIView在这个layer上描绘东西。那怎么访问这个layer呢,很简单:原创 2014-06-17 16:31:26 · 432 阅读 · 0 评论 -
Core Animation之多种动画效果
前面介绍了Core Animation基础知识,还有CALayer的简单使用,最终还是有要动画的滴,这里列出几个动画效果,参考下能加深对Core Animation的认识和理解1、把图片移到右下角变小透明使用CAAnimationGroup叠加动画效果,就是下面按钮《把图片移到右下角变小透明》描述的效果: 、上面三个图是动画的三个状态,实现代码如下:[cpp原创 2014-06-17 16:30:36 · 487 阅读 · 0 评论 -
AFNetworking2.0源码解析<二>
续AFNetworking2.0源码解析 本篇我们继续来看看AFNetworking的下一个模块 — AFURLRequestSerialization。 AFURLRequestSerialization用于帮助构建NSURLRequest,主要做了两个事情: 1.构建普通请求:格式化请求参数,生成HTTP Header。2.构建multipart请求。 分别原创 2014-09-24 10:38:40 · 642 阅读 · 0 评论 -
堪称最好的A*算法
原文地址:http://theory.stanford.edu/~amitp/GameProgramming/相关链接:http://www-cs-students.stanford.edu/%7Eamitp/gameprog.html#Paths 我们尝试解决的问题是把一个游戏对象(game object)从出发点移动到目的地。路径搜索(Pathfinding)的目标是找到一条好的路原创 2014-10-09 18:23:32 · 754 阅读 · 0 评论 -
Objective-C Runtime
本文详细整理了 Cocoa 的 Runtime 系统的知识,它使得 Objective-C 如虎添翼,具备了灵活的动态特性,使这门古老的语言焕发生机。主要内容如下:引言简介与Runtime交互Runtime术语消息动态方法解析消息转发健壮的实例变量(Non Fragile ivars)Objective-C Associated ObjectsMethod Swizzling总结原创 2016-01-13 17:19:04 · 384 阅读 · 0 评论 -
iOS 消息推送原理及实现总结
一、消息推送原理:在实现消息推送之前先提及几个于推送相关概念,如下图:1、 Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Provider可以理解为服务端[消息的发起者]);2、 APNS:Apple Push Notification Service[苹果消息推送服务器];3、 iPhone:用来接收APNS下原创 2013-08-02 09:52:37 · 635 阅读 · 0 评论 -
基于XMPP的IOS聊天客户端程序(IOS端二)
接上一章的,这一章我们着重介绍XMPP为了方便程序调用,我们把XMPP的一些主要方法写在AppDelegate中在AppDelegate.m下这几个方法为:[java] view plaincopy-(void)setupStream{ //初始化XMPPStream xmppStream = [[XMPPStream原创 2013-07-09 09:53:12 · 679 阅读 · 0 评论 -
【iOS XMPP】使用XMPPFramewok(五):好友列表
好友列表 好友列表,在 XMPP 中被称为 roster,花名册?获取 roster 需要客户端发送 标签向 XMPP 服务器端查询 一个 IQ 请求: from="xiaoming@example.com" to="example.com" id="1234567"> type 属性,说明了该 iq 的类型为 get,与 HTTP 类似,原创 2014-06-27 14:49:28 · 580 阅读 · 0 评论 -
苹果推送APNS
开发状态服务器地址gateway.sandbox.push.apple.com 2195产品状态服务器地址gateway.push.apple.com 2195Development和Production两个版本对应的apnsdevice token是不同的,前者是develop的mobileprovision下获取的。后者是production的mobileprovis原创 2013-11-04 14:20:30 · 924 阅读 · 0 评论 -
推送通知iOS客户端编写实现及推送服务器端编写
1、iOS客户端编程推送通知技术在Mac OS X和iOS系统上都可以运行,我们本章主要介绍iOS客户端编程,推送通知的编程比较简单,编程的关键是获得令牌,这是从APNS返回的,然后还有把提交给内容提供商。下面我们看看开发之前的一些准备工作。 配置Xcode工程编写iOS推送应用需要在Xcode工程中进行一些配置,这些配置是主要是设置代码签名标识,代码签名标识的前提要有配置概要文件原创 2013-08-02 09:32:04 · 732 阅读 · 0 评论 -
推送 其他
关于推送通知 推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能。是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的。一般说来,当要显示消息或下载数据的时候,通知是由远程服务器(程序的提供者)发送,然后通过苹果的推送通知服务(Apple Push Notification Service,简称apns)推送到设备的程序上。原创 2013-08-24 22:48:35 · 634 阅读 · 0 评论 -
iOS iAP 支付与购买
1. 创建应用首先进入iTunes Connect然后按下 Manage Your Applications接下来按下Add New Application按钮创建应用2. 在应用中创建IAP创建应用之后,在Manage Your Applications中点应用的图示,进入应用就会看到上图画面点击Manage In App Purchases就可以进入原创 2013-08-19 09:13:13 · 1279 阅读 · 0 评论 -
Background Modes in iOS Tutorial
Beginning with iOS 4, you can design your apps to stay suspended in memory when users push the home button. Even though the app is in memory, its operations are paused until the user starts it again.原创 2013-08-06 17:44:51 · 1780 阅读 · 0 评论 -
基于XMPP的IOS聊天客户端程序(XMPP服务器架构)
最近看了关于XMPP的框架,以文本聊天为例,需要发送的消息为:[html] view plaincopymessage type="chat" from="kang@server.com" to="test@server.com"> body>helloWordbody> message> 基中from是从哪个用户发送的消息,to是发给谁的消息原创 2013-07-09 09:50:26 · 984 阅读 · 0 评论 -
block介绍(三)揭开神秘面纱(上)
上一篇我们总结了各个情况下,block及其引用到的内存位置情况。接下来几篇,我们将剖析编译器转码以及运行时库源码来一探block的究竟。 block到底是什么我们使用clang的rewrite-objc命令来获取转码后的代码。 1、block的底层实现我们来看看最简单的一个block:图一 这个block仅仅打印栈变量i和j的值,其被clang转原创 2013-07-12 17:13:20 · 802 阅读 · 0 评论 -
Block介绍(一)基础
一、概述Block是C级别的语法和运行时特性。Block比较类似C函数,但是Block比之C函数,其灵活性体现在栈内存、堆内存的引用,我们甚至可以将一个Block作为参数传给其他的函数或者Block。 二、热身先看一个比较简单的Block例子:int multiplier = 7;int (^myBlock)(int) = ^(int num) { return nu原创 2013-07-12 17:09:04 · 731 阅读 · 0 评论 -
block介绍(四)揭开神秘面纱(下)
终于有空开始这系列最后一篇的编写。这一篇,我们将看到block的内存管理的内部实现,通过剖析runtime库源码,我们可以更深刻的理解block的内存运作体系。看此篇时,请大家同时打开两个网址(或者下载它们到本地然后打开):http://llvm.org/svn/llvm-project/compiler-rt/trunk/BlocksRuntime/runtime.chttp原创 2013-07-12 17:14:44 · 731 阅读 · 0 评论 -
Block介绍(二)内存管理与其他特性
我们在前一章介绍了block的用法,而正确使用block必须要求正确理解block的内存管理问题。这一章,我们只陈述结果而不追寻原因,我们将在下一章深入其原因。一、block放在哪里我们针对不同情况来讨论block的存放位置:1.栈和堆以下情况中的block位于堆中:1234567891011121原创 2013-07-12 17:10:00 · 688 阅读 · 0 评论 -
基于XMPP的IOS聊天客户端程序(IOS端一)
介绍完了服务器,这篇我们就要介绍重点了,写我们自己的IOS客户端程序先看一下我们完成的效果图首先下载xmppframework这个框架,下载点ZIP下载接下来,用Xcode新建一个工程将以下这些文件拖入新建工程中加入framework并设置到这里我们就全部设好了,跑一下试试,看有没有错呢如果没有错的话,我们的原创 2013-07-09 09:51:27 · 966 阅读 · 0 评论 -
ios即时通讯客户端开发之-mac上搭建openfire服务器
一、下载并安装openfire1.到http://www.igniterealtime.org/downloads/index.jsp下载最新openfire for mac版比如:Openfire 3.8.1,下载后的文件:openfire_3_8_1.dmg2.点击安装,并执行默认操作3.启动openfire服务在系统偏好设置的其他里,点击openfire偏好启原创 2014-05-15 12:06:31 · 457 阅读 · 0 评论 -
UIBezierPath贝塞尔弧线常用方法记
//根据一个矩形画曲线+ (UIBezierPath*)bezierPathWithRect:(CGRect)rect//根据矩形框的内切圆画曲线+ (UIBezierPath*)bezierPathWithOvalInRect:(CGRect)rect//根据矩形画带圆角的曲线+ (UIBezierPath*)bezierPathWithRound原创 2014-06-23 22:40:25 · 742 阅读 · 0 评论 -
【ejabberd】安装XMPP服务器ejabberd(Ubuntu 12.04)
ejabberdejabberd is a free and open source instant messaging server written in Erlang/OTP.ejabberd is cross-platform, distributed, fault-tolerant, and based on open standards to achieve real-time原创 2014-06-27 14:45:55 · 978 阅读 · 0 评论 -
【iOS XMPP】使用XMPPFramewok(二):用户登录
用户登录 准备工作比较知名的开源XMPP服务器:一个是Openfire,一个是ejabberdOpenfire 使用 Java 语言编写,比较容易上手,地址:http://www.igniterealtime.org/projects/openfire/ejabberd 使用 Erlang 语言编写,是一款非常知名的 Erlang 开源项目,地址:http://www.ejab原创 2014-06-27 14:47:27 · 591 阅读 · 0 评论 -
基于XMPP的IOS聊天客户端程序(IOS端三)
接上一章的,这一章我们着重介绍XMPP为了方便程序调用,我们把XMPP的一些主要方法写在AppDelegate中在AppDelegate.m下这几个方法为:[java] view plaincopy-(void)setupStream{ //初始化XMPPStream xmppStream = [[XMPPStream原创 2013-07-09 09:55:37 · 792 阅读 · 0 评论 -
【iOS XMPP】使用XMPPFramewok(四):收发消息
收发消息 接收消息通过实现 - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message;方法当接收到 标签的内容时,XMPPFramework 框架回调该方法根据 XMPP 协议,消息体的内容存储在标签 内- (void)xmppStream:(XMPPSt原创 2014-06-27 14:48:43 · 501 阅读 · 0 评论 -
【iOS XMPP】使用XMPPFramewok(三):好友状态
好友状态 获取好友状态,通过实现 - (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence方法当接收到 标签的内容时,XMPPFramework 框架回调该方法 一个 标签的格式一般如下: 这里是显示的内容 这里是显示的状态prese原创 2014-06-27 14:48:10 · 603 阅读 · 0 评论 -
【iOS XMPP】使用XMPPFramewok(一):添加XMPPFramework(XCode 4.6.2)
XMPPFrameworkGitHub: https://github.com/robbiehanson/XMPPFramework 获取源代码git clone https://github.com/robbiehanson/XMPPFramework.gitcheckout XMPPFramework 一个最新的 branch 添加依赖> 拷贝 /Vendor/原创 2014-06-27 14:46:32 · 627 阅读 · 0 评论 -
企业版证书($299)In-House方式发布指南
一、明确几个概念1、企业版IDP:即iOS Development Enterprise Program。注意是$299/Year那种,并不是$99/Year的那种。2、In House:是只企业内部发布,仅限企业内部人员使用。二、In-House方式特点1、不能发布到Apple Store进行销售。2、不需要Apple评审。3、可以使用原创 2014-07-17 18:33:20 · 675 阅读 · 0 评论 -
多线程编程2 - NSOperation
一、NSOperation1.简介NSOperation实例封装了需要执行的操作和执行操作所需的数据,并且能够以并发或非并发的方式执行这个操作。NSOperation本身是抽象基类,因此必须使用它的子类,使用NSOperation子类的方式有2种:1> Foundation框架提供了两个具体子类直接供我们使用:NSInvocationOperation和NSBlockOpera原创 2014-06-25 19:16:53 · 419 阅读 · 0 评论 -
多线程编程4 - GCD
一、简介在iOS所有实现多线程的方案中,GCD应该是最有魅力的,因为GCD本身是苹果公司为多核的并行运算提出的解决方案。GCD在工作时会自动利用更多的处理器核心,以充分利用更强大的机器。GCD是Grand Central Dispatch的简称,它是基于C语言的。如果使用GCD,完全由系统管理线程,我们不需要编写线程代码。只需定义想要执行的任务,然后添加到适当的调度队列(dispatch原创 2014-06-25 19:14:39 · 389 阅读 · 0 评论