- 博客(73)
- 资源 (42)
- 收藏
- 关注
转载 iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
--iOS多媒体概览随着移动互联网的发展,如今的手机早已不是打电话、发短信那么简单了,播放音乐、视频、录音、拍照等都是很常用的功能。在iOS中对于多媒体的支持是非常强大的,无论是音视频播放、录制,还是对麦克风、摄像头的操作都提供了多套API。在今天的文章中将会对这些内容进行一一介绍:音频音效音乐音频会话录音音频队列服务视频MPMoviePlayerContr
2016-04-30 23:24:04 460
转载 iOS瘦身之删除FrameWork中无用mach-O文件
iOS瘦身之删除FrameWork中无用mach-O文件原文 http://www.infoq.com/cn/articles/ios-thinning-delete-unnecessary-mach-o最近项目末期, 我们团队为了ipa的大小使用不少的体积减小的方法, 除了一些常规的方法之外, 我分享一下自己研究出来的新思路。首先我们来简单的介绍一下ma
2016-04-30 23:04:46 2855
转载 frame 与 bounds 的区别与关系
frame和bounds是UIView中的两个属性(property)。frame指的是:该view在父view坐标系统中的位置和大小。(参照点是父亲的坐标系统)bounds指的是:该view在本身坐标系统中 的位置和大小。(参照点是本身坐标系统)-(CGRect)frame{ return CGRectMake(self.frame.origin.x,self.fra
2016-04-30 20:42:52 293
转载 NSURLSession的介绍和说明
相关组件NSURLSessionNSURLSessionConfigurationNSURLSessionDataTaskNSURLSessionUploadTaskNSURLSessionDownloadTask与NSURLConnection对比改进是可以配置每个session的缓存,协议,cookie以及credential policy。每个NSURLSession
2016-04-30 16:55:47 1286
转载 NSURLSession的基本使用
.1 涉及知识点(1)使用步骤 使用NSURLSession创建task,然后执行task(2)关于taska.NSURLSessionTask是一个抽象类,本身不能使用,只能使用它的子类b.NSURLSessionDataTask\NSURLSessionUploadTask\NSURLSessionDownloadTask(3)发送get请求
2016-04-30 16:53:22 496
转载 iOS http 怎么设置cookie
一直以为ios的http请求这块很简单应该不支持记录,保存,或者使用cookie,可是想当然归想当然,真用的时候,真研究了一下发现还真强大。经过一番的研究简单说一下我的理解:当你访问一个网站时,不管你愿意或者不愿意,NSURLRequest都会帮你主动记录下来你访问的站点设置的cookie,而且很负责任的,当你下次再访问这个站点时,NSURLRequest会拿着上次保存下来了的cookie继续去请
2016-04-28 19:34:15 732
原创 为什么要在预编译头中加__OBJC__?
因为在一个OC工程中,可能包含.m、.mm、.c、.cpp四类编译文件,这四类文件均会引用.pch预编译头。 在编译.c,.cpp时,因为语法不兼容OC,所以预编译头中不能包含objc代码。 因为.pch是2类源文件共用的,所以在pch中,oc头文件要用__OBJC__包含起来。如下:
2016-04-28 19:25:47 411
转载 利用dwarfdump命令和dsym文件链接binary image,查看crash log中
利用dwarfdump命令和dsym文件链接binary image,查看crash log中... 首先需要打包的dsym文件,然后在终端中输入命令: ?1$ dwarfdump --lookup=ADDRESS --arch=ARCH {MyApp.app.dsym}
2016-04-27 19:13:33 884
转载 IMP
可能大家一直看到有许多朋友在Runtime相关文章中介绍IMP指针的概念,那么IMP究竟有什么实际作用呢?让我们先从一个函数看起来。Method Swizzling如果对Runtime有一定了解的话,一定听说过或者用过这个函数:1void method_exchangeImplementations(Method m1, Me
2016-04-27 15:55:09 429
转载 深入理解Objective-C的Runtime机制
摘要:Objective-C是基于C加入了面向对象特性和消息转发机制的动态语言,除编译器之外,还需用Runtime系统来动态创建类和对象,进行消息发送和转发。本文作者通过分析Apple开源的Runtime代码来深入理解OC的Runtime机制。这时首先会构造出objc_super结构体,这个结构体第一个成员是self,第二个成员是(id)class_getSuperclas
2016-04-27 12:41:23 416
转载 Objective C的runtime
前言: Objective C的runtime技术功能非常强大,能够在运行时获取并修改类的各种信息,包括获取方法列表、属性列表、变量列表,修改方法、属性,增加方法,属性等等,本文对相关的几个要点做了一个小结。目录:(1)使用class_replaceMethod/class_addMethod函数在运行时对函数进行动态替换或增加新函数(2)重载f
2016-04-27 12:39:36 198
转载 sendEvent——A trick for capturing all touch input for the duration of a touch
A trick for capturing all touch input for the duration of a touchIf you’ve ever tried to implement an interactive control that makes use of gestures within a UITableView, or tried to implement a view
2016-04-26 23:04:28 323
转载 小笨狼与LLDB的故事
你是否曾经苦恼于理解你的代码,而去尝试打印一个变量的值?NSLog(@"%@", whatIsInsideThisThing);或者跳过一个函数调用来简化程序的行为?NSNumber *n = @7; // 实际应该调用这个函数:Foo();或者短路一个逻辑检查?if (1 || theBooleanAtStake) { ... }或者伪造一个函数实现?
2016-04-26 20:26:34 396
转载 iOS dSYM文件结构剖析(上)
摘要:在iOS App开发过程中,开发者会利用Xcode打包生成.xcarchive的包文件,并通过Organizer工具可以管理、导出发布文件。本文作者从本文开始,详细剖析了打包之后的dSYM文件的结构。CSDN移动将持续为您优选移动开发的精华内容,共同探讨移动开发的技术热点话题,涵盖移动应用、开发工具、移动游戏及引擎、智能硬件、物联网等方方面面。如果您想投稿、参与内容翻译工
2016-04-26 19:33:31 711
转载 iOS Crash文件的解析(一)
iOS Crash文件的解析(一) yuanwen: http://www.cnblogs.com/smileEvday/p/Crash1.html 开发程序的过程中不管我们已经如何小心,总是会在不经意间遇到程序闪退。脑补一下当你在一群人面前自信的拿着你的App做功能预演的时候,流畅的操作被无情地Crash打断。联想起老罗在发布Smartisan OS的时候说了,他准备了10个手
2016-04-26 19:31:07 298
转载 dSYM 文件分析工具
dSYM 文件分析工具原文:http://www.cocoachina.com/ios/20141219/10694.html来到新公司后,前段时间就一直在忙,前不久 项目 终于成功发布上线了,最近就在给项目做优化,并排除一些线上软件的 bug,因为项目中使用了友盟统计,所以在友盟给出的错误信息统计中能比较方便的找出客户端异常的信息,可是很多像数组越界却只给出了 *** -
2016-04-26 19:11:27 432
转载 OSAtomic原子操作
OSAtomic原子操作OCT 17TH, 2014 | COMMENTS并发编程一个主要问题就是如何同步数据。同步数据的方式有很多种,这里我们介绍一下libkern/OSAtomic.h。这个头文件包含是大量关于原子操作和同步操作的函数,如果要对数据进行同步操作,这里面的函数可以作为我们的首选项。不同平台这些函数的实现是自定义的。另外,它们是线程安全的。需要注意的是,
2016-04-26 15:05:38 937
转载 OSATOMIC与synchronized 加锁的对比
(转: http://blog.csdn.net/a21064346/article/details/8076972)#import导入这个文件,可以调用里面的函数,来保证变量的数值。/*! @header * These are the preferred versions of the atomic andsynchroniz
2016-04-26 14:40:26 357
原创 instancetype
instancetype 关键字,它可以表示一个方法的相关返回类型。例如:@interface Person + (instancetype)personWithName:(NSString *)name; @end instancetype 与 id 不一样, instancetype 只能在方法声明中作为返回类型使用。使用 ins
2016-04-26 14:30:25 284
转载 HTTP: Status code
转载于:http://blog.csdn.net/wellway/article/details/7394900常见的状态码:HTTP: Status200– 服务器成功返回网页HTTP: Status404– 请求的网页不存在HTTP: Status503– 服务不可用————————————————————————————————HTTP:
2016-04-26 14:20:11 310
转载 AFNetworking 2.x 的SSL身份认证
一般来讲如果app用了web service , 我们需要防止数据嗅探来保证数据安全.通常的做法是用ssl来连接以防止数据抓包和嗅探其实这么做的话还是不够的.我们还需要防止中间人攻击(不明白的自己去百度)。攻击者通过伪造的ssl证书使app连接到了伪装的假冒的服务器上,这是个严重的问题!那么如何防止中间人攻击呢?首先web服务器必须提供一个ssl证书,需要一个 .crt 文
2016-04-24 22:39:02 221
转载 介绍NSURLSESSION网络请求套件
昨天翻译了一篇《NSURLSession的使用》的文章,地址:http://www.cnblogs.com/JackieHoo/p/4995733.html,原文是来自苹果官方介绍NSURLSession技术实现网络请求的原理文章,文章中提到NSURLSession网络请求技术是NSURLSession这个新类和它相关类的套件集合。今天这篇文章,我就重点介绍下NSURLSession套件的几个重要
2016-04-24 21:30:44 376
转载 iOS 7系列译文:忘记NSURLConnection,拥抱NSURLSession吧!
说到 iOS 7 和 Mac OS X 10.9 Mavericks 的显著变化,其中一个就是Foundation框架中URL加载系统的优化。 此时可能有人正沉浸在Apple的网络基础架构,我想在这里分享一下我对这些新APIs的看法,并展示这些新APIs如何改变我们构建应用程序的方式,以及这些它们在API设计理念演变中的意义。 作为Core Foundation / CFNet
2016-04-24 21:17:59 304
转载 心跳包机制
心跳包机制 跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小的包,或者只包含包头的一个空包。 在TCP的机制里面,本身是存在有心跳包的机制的,也就是TCP的选项:SO_KEEPALIVE。系统默认是设置的2小时的心跳频率。但是它检查不到机器断电、网线拔出
2016-04-24 21:06:29 1227
转载 ios在后台每隔一段时间执行一下 资料3
如何使应用被切到后台,应用中的网络连接仍然接收数据并维持存活(像QQ iphone 一样);其实按 IOS官方文档一步一步做就可以实现上述功能;这里主要说一下我按文档遇到的问题,以及将原来的C/C++程序(主要是网络层)简单的修改一下就可以支持 IOS后台运行的方法.1.在 xxxx Info.plist 添加 以支持 后台运行UIBackgroundModesvoip
2016-04-24 21:00:22 1850
转载 IOS在后台每隔一段时间执行一下 资料2
步骤:1.在info.plist里加入UIBackgroundModes键,其值为数组,数组之一为voip字符串:UIBackgroundModesvoip2.在程序启动的时候调用- (void)setupBackgroundHandler函数,函数体如下:#pragma mark - VoIP - (void)setup
2016-04-24 20:58:44 732
转载 IOS在后台每隔一段时间执行一下 资料1
如果你的应用程序需要在设备休眠的时候还能够收到服务器端发送的消息,那我们就可以借助VOIP的模式来实现这一需求。但是如果的应用程序并不是正真的VOIP应用,那当你把你的应用提交到AppStore的时候基本上会被苹果Reject. 但是如果你的应用是企业内部发布的或者你只想了解其中的原理,那该文也许对您会有所帮助。 一、在iOS中如何应用VOIP VOIP程序需要稳定的网络去连接和它相关的服务,
2016-04-24 20:57:58 2434
原创 NSSetUncaughtExceptionHandler
1,首先在delegate文件里面- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions函数里面添加:NSSetUncaughtExceptionHandler (&Uncaught
2016-04-21 11:39:15 499
转载 Objective-C消息机制的原理
http://dangpu.sinaapp.com/?p=119 在Objective-C中,message与方法的真正实现是在执行阶段绑定的,而非编译阶段。编译器会将消息发送转换成对objc_msgSend方法的调用。 objc_msgSend方法含两个必要参数:receiver、方法名(即:selector),如: [receiver message]; 将
2016-04-21 11:12:32 337
转载 Objective-C中一种消息处理方法performSelector: withObject:
Objective-C中调用函数的方法是“消息传递”,这个和普通的函数调用的区别是,你可以随时对一个对象传递任何消息,而不需要在编译的时候声明这些方法。所以Objective-C可以在runtime的时候传递人和消息。 首先介绍两个方法 SEL和@selector根据AppleObjective-C Runtime Reference官方文档这个传递消息的函数就
2016-04-21 11:01:20 344
转载 详解objc_msgSend
【详解objc_msgSend】 1、为了性能,objc_msgSend用汇编写成。存在于objc-msg-x86_64.s中。 2、在上图代码中可以看到,objc_msgSend被分为2个过程:1)在cache中寻找SEL。2)在MethodTable寻找SEL。 3、CacheLookup中,不断地拿SEL与cache中的缓存比较,比较失败,则跳转到 LCacheMiss标
2016-04-21 10:57:18 1843
转载 oc 中的SEL
Objective-C在编译的时候,会根据方法的名字(包括参数序列),生成一个用 来区分这个方法的唯一的一个ID,这个ID就是SEL类型的。我们需要注意的是,只要方法的名字(包括参数序列)相同,那么它们的ID都是相同的。就是 说,不管是超类还是子类,不管是有没有超类和子类的关系,只要名字相同那么ID就是一样的。我们可以方便的通过方法的名字,获取到方法的ID也就是我们所说的SEL,反之亦然。
2016-04-20 07:50:57 950
转载 响应者链(Responder Chain)
响应者链(Responder Chain)响应者对象(Responder Object),指的是有响应和处理事件能力的对象。响应者链就是由一系列的响应者对象构成的一个层次结构。UIResponder是所有响应对象的基类,在UIResponder类中定义了处理上述各种事件的接口。我们熟悉的UIApplication、 UIViewController、UIWindow和所有继承自UI
2016-04-18 13:14:26 398
原创 image 圆角
方法一:效率高 aImageView.layer.cornerRadius = aImageView.frame.size.width/2.0; aImageView.layer.masksToBounds = YES;方法二:效率低CAShapeLayer *layer = [CAShapeLayer layer]; UIBezierP
2016-04-17 22:39:33 380
转载 警惕使用NSTimer时的循环引用
使用NSTimer可能会碰到循环引用的问题。特别是当类具有NSTimer类型的成员变量,并且需要反复执行计时任务时。例如_timer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self
2016-04-17 14:12:03 1213
转载 iOS关于RunLoop和Timer
RunLoop这个东西,其实我们一直在用,但一直没有很好地理解它,或者甚至没有知道它的存在。RunLoop可以说是每个线程都有的一个对象,是用来接受事件和分配任务的loop。永远不要手动创建一个runloop,它是跟随着每个线程的。一个RunLoop接收两种source的事件:input source和timer source。同时必须知道的是,input source,runloop是异步交付的
2016-04-17 13:30:52 385
转载 iOS中几种定时器 - 控制了时间
在软件开发过程中,我们常常需要在某个时间后执行某个方法,或者是按照某个周期一直执行某个方法。在这个时候,我们就需要用到定时器。然而,在iOS中有很多方法完成以上的任务,到底有多少种方法呢?经过查阅资料,大概有三种方法:NSTimer、CADisplayLink、GCD。接下来我就一一介绍它们的用法。一、NSTimer1. 创建方法1
2016-04-17 13:16:55 295
转载 dispatch_barrier_async函数
写篇文章实践一下这个函数 .[objc] view plain copy dispatch_queue_t concurrentQueue = dispatch_queue_create("my.concurrent.queue", DISPATCH_QUEUE_CONCURRENT); dispatch_async(co
2016-04-16 10:18:38 310
转载 多线程并发流程控制之dispatch_group 有关函数
A B C D 4个并发下载任务,怎样在第一时间知道任务全部完成?dispatch_group 可以帮我们实现这样的控制。上代码,看说明.[objc] view plain copydispatch_group_t group = dispatch_group_create(); // 某个任务放进 group
2016-04-16 10:16:39 834
转载 NSOperation
iOS平台提供更高级的并发(异步)调用接口,让你可以集中精力去设计需完成的任务代码,避免去写与程序逻辑无关的线程生成、运行等管理代码。当然实质上是这些接口隐含生成线程和管理线程的运行,从而更加简洁地实现多线程。下面先来研究NSOperation和NSOperationQueue类的使用。NSOperation实质是封装了需要并发运行的代码,一些主要接口和NSThread基本相同,可以看做没
2016-04-14 22:55:18 1099
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人