IOS开发
随心飘散
在路上
展开
-
IOS多线程开发之GCD
GCD全称为Grand Central Dispatch 在IOS4才开始,用来实现多线程。它是IOS多线程抽象层次最高的一层,下面还有更加轻量级的Cocoa operations,和Thread。 当看到GCD的使用我仿佛看到了Android中的Handler和AsynTask。[cpp] view plaincopy在主线程中任意转载 2013-04-07 10:59:56 · 782 阅读 · 0 评论 -
iOS并发编程指南(1)
iOS Concurrency Programming GuideiOS 和 Mac OS 传统的并发编程模型是线程,不过线程模型伸缩性不强,而且编写正确的线程代码也不容易。Mac OS 和 iOS 采取 asynchronous design approach 来解决并发的问题。引入的异步技术有两个:Grand Central Dispatch:系统管理线程,你不需要编写转载 2013-04-07 11:01:48 · 771 阅读 · 0 评论 -
iOS并发编程指南(2)
Dispatch Queuesdispatch queues是执行任务的强大工具,允许你同步或异步地执行任意代码block。原先使用单独线程执行的所有任务都可以替换为使用dispatch queues。而dispatch queues最大的优点在于使用简单,而且更加高效。dispatch queues任务的概念就是应用需要执行的一些工作,如计算、创建或修改数据结构、处理数据等等。我转载 2013-04-07 11:03:49 · 708 阅读 · 0 评论 -
iOS并发编程指南(3)
Dispatch Sources现代系统通常提供异步接口,允许应用向系统提交请求,然后在系统处理请求时应用可以继续处理自己的事情。Grand Central Dispatch正是基于这个基本行为而设计,允许你提交请求,并通过block和dispatch queue报告结果。dispatch source是基础数据类型,协调特定底层系统事件的处理。Grand Central Disp转载 2013-04-07 11:04:57 · 770 阅读 · 0 评论 -
iOS并发编程指南(4)
Migrating Away from Threads从现有的线程代码迁移到Grand Central Dispatch和Operation对象有许多方法,尽管可能不是所有线程代码都能够执行迁移,但是迁移可能提升性能,并简化你的代码。使用dispatch queue和Operaiton queue相比线程拥有许多优点:应用不再需要存储线程栈到内存空间消除了创建和配置转载 2013-04-07 11:06:01 · 855 阅读 · 0 评论 -
SQLite在多线程环境下的应用
这几天研究了一下SQLite这个嵌入式数据库在多线程环境下的应用,感觉里面的学问还挺多,于是就在此分享一下。先说下初衷吧,实际上我经常看到有人抱怨SQLite不支持多线程。而在iOS开发时,为了不阻塞主线程,数据库访问必须移到子线程中。为了解决这个矛盾,很有必要对此一探究竟。关于这个问题,最权威的解答当然是SQLite官网上的“Is SQLite threadsafe?”这个问转载 2013-04-07 11:07:13 · 720 阅读 · 0 评论 -
Xcode4.5出现时的OC新语法
@synthesize 可以不用再写了如果在.h文件里有@propery NSObject * aProperty那么可以认为 编译器会类似在.m文件里生成@synthesize aProperty = _aProperty如果上面的都不认识 就可以认为 以下代码@interface Spouce:NSObject@property (strong)原创 2013-04-07 11:09:35 · 683 阅读 · 0 评论 -
生成APNS Service证书的步骤
要进行推送服务的第一件事就是获取推送证书。它用来对你通过SSL与APNS通讯进行识别。在Mac上生成 Apple推送通知SSL证书:登录到 iPhone Developer Connection Portal 并点击 App IDs创建一个不使用通配符的 App ID 。通配符 ID 不能用于推送通知服务。例如,我们的iPhone程序ID像这样: AB123346CD.com原创 2013-04-08 15:32:07 · 1092 阅读 · 0 评论 -
iOS Code Signing: 解惑详解
教程截图: 下面是一篇有澳洲墨尔本的一名全职iOS开发者提供的文章。他在论坛上是一个很摩登的年轻人 – AdamEberbach。 ·Bundleidentifier ·provisioningprofiles ·AppID ·certificatesigning reque原创 2013-04-08 15:45:56 · 705 阅读 · 0 评论 -
objc_getAssociatedObject, objc_setAssociatedObject
category与associative作为objective-c的扩展机制的两个特性,category即类型,可以通过它来扩展方法;associative,可以通过它来扩展属性;在iOS开发中,可能category比较常见,相对的associative,就用的比较少,要用它必须使用的头文件,然后就可以自由使用objc_getAssociatedObject以及objc_setAssociated原创 2013-04-27 13:56:17 · 1834 阅读 · 0 评论 -
GCD介绍(一): 基本概念和Dispatch Queue
GCD介绍(一): 基本概念和Dispatch Queue什么是GCD?Grand Central Dispatch或者GCD,是一套低层API,提供了一种新的方法来进行并发程序编写。从基本功能上讲,GCD有点像NSOperationQueue,他们都允许程序将任务切分为多个单一任务然后提交至工作队列来并发地或者串行地执行。GCD比之NSOpertionQueue更底层更高原创 2013-04-27 17:34:32 · 578 阅读 · 0 评论 -
GCD介绍(二): 多核心的性能
GCD介绍(二): 多核心的性能概念为了在单一进程中充分发挥多核的优势,我们有必要使用多线程技术(我们没必要去提多进程,这玩意儿和GCD没关系)。在低层,GCD全局dispatch queue仅仅是工作线程池的抽象。这些队列中的Block一旦可用,就会被dispatch到工作线程中。提交至用户队列的Block最终也会通过全局队列进入相同的工作线程池(除非你的用户队列的目标是主线原创 2013-04-27 17:35:28 · 771 阅读 · 0 评论 -
respondsToSelector的相关使用
-(BOOL) isKindOfClass: classObj 用来判断是否是某个类或其子类的实例-(BOOL) isMemberOfClass: classObj 用来判断是否是某个类的实例-(BOOL) respondsToSelector: selector 用来判断是否有以某个名字命名的方法(被封装在一个selector的对象里传递)+(BOOL) instancesRespo原创 2013-04-27 17:41:42 · 596 阅读 · 0 评论 -
iOS越狱开发之MobileSubstrate介绍
MobileSubstrateMobileSubstrate 实际上是一个框架,允许第三方的开发者在系统的方法里打一些运行时补丁,扩展一些方法.类似于Application Enhancer(http://www.unsanity.com/haxies/ape).MobileSubstrate 主要有3部分组成. MobileHooker,MobileLoader 和 safemode.转载 2013-04-28 15:24:34 · 1310 阅读 · 0 评论 -
iOS网络编程-iCloud键值数据存储编程实例
iCloud键值数据存储设计iCloud键值数据存储编程实例,画面中有两个开关控件,左图是设备1点击“设置iCloud数据”按钮,将控件状态保存到iCloud服务器。右图是设备2画面,过几秒钟后设备2收到变更通知。 配置Xcode工程使用Xcode创建一个iOS工程,工程创建好之后,选择TAGETS→MyNotes→Summary→Entitlements,我们可以在这里转载 2013-04-28 15:13:36 · 610 阅读 · 0 评论 -
IOS程序名称及内容国际化(本地化)
1、IOS程序名称国际化1.1 新建一个Single View app模版项目,命名为Localization。1.2 新建后,可以看到工作目录结构文件如下,单击InfoPlist.strings,查看右边的属性,在Localization栏添加语言。 1.3 添加完成后打开对应语言文件,比如English的添加CFBundleDisplayName="China";原创 2013-05-27 17:58:54 · 787 阅读 · 0 评论 -
iOS系统GCD学习(5):信号量机制
当我们在处理一系列线程的时候,当数量达到一定量,在以前我们可能会选择使用NSOperationQueue来处理并发控制,但如何在GCD中快速的控制并发呢?答案就是dispatch_semaphore,对经常做unix开发的人来讲,我所介绍的内容可能就显得非常入门级了,信号量在他们的多线程开发中再平常不过了。 信号量是一个整形值并且具有一个初始计数值,并且支持两个操作:信号通知和等待。当一个信转载 2013-06-04 10:26:22 · 3653 阅读 · 0 评论 -
iOS系统GCD学习(3):dispatch_group
设想下面的循环:for(id obj in array) [self doSomethingIntensiveWith:obj]; 假定 -doSomethingIntensiveWith: 是线程安全的且可以同时执行多个.一个array通常包含多个元素,这样的话,我们可以很简单地使用GCD来平行运算:dispatch_queue_t queue = dispat转载 2013-06-04 10:33:01 · 1753 阅读 · 0 评论 -
iOS系统GCD学习(7):dispatch_once
GCD还提供单次初始化支持,这个与pthread中的函数 pthread_once很相似。GCD提供的方式的优点在于它使用block而非函数指针,这就允许更自然的代码方式。 这个特性的主要用途是惰性单例初始化或者其他的线程安全数据共享。典型的单例初始化技术看起来像这样(线程安全的):01020304050607转载 2013-06-04 11:16:59 · 808 阅读 · 0 评论 -
iOS系统GCD学习(9):多核心的性能
概念 为了在单一进程中充分发挥多核的优势,我们有必要使用多线程技术(我们没必要去提多进程,这玩意儿和GCD没关系)。在低层,GCD全局dispatch queue仅仅是工作线程池的抽象。这些队列中的Block一旦可用,就会被dispatch到工作线程中。提交至用户队列的Block最终也会通过全局队列进入相同的工作线程池(除非你的用户队列的目标是主线程,但是为了提高运行速度,我们绝不会这么转载 2013-06-04 11:17:57 · 691 阅读 · 0 评论 -
iOS系统GCD学习(10):常见的错误
贴几段斯坦福大学关于gcd的代码,这段代码逐步演示了如何修正错误,其中用到的既是串行队列。 1。这个是原始代码[cpp] view plaincopy- (void)viewWillAppear:(BOOL)animated { NSData *imageData = [FlickrFetcher imageDataForPhotoWith转载 2013-06-04 11:19:23 · 699 阅读 · 0 评论 -
iOS系统GCD学习(4):dispatch_group2
dispatch_apply的使用 对于同步执行,GCD提供了一个简化方法叫做dispatch_apply。这个函数调用单一block多次,并平行运算,然后等待所有运算结束,就像我们想要的那样:dispatch_queue_t queue = dispatch_get_global_qeueue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);原创 2013-06-04 10:36:50 · 1026 阅读 · 0 评论 -
iOS系统GCD学习(6):Dispatch Sources
何为Dispatch Sources 简单来说,dispatch source是一个监视某些类型事件的对象。当这些事件发生时,它自动将一个block放入一个dispatch queue的执行例程中。说的貌似有点不清不楚。我们到底讨论哪些事件类型? 下面是GCD 10.6.0版本支持的事件:[cpp] view plaincopyMach port s转载 2013-06-04 11:16:06 · 743 阅读 · 0 评论 -
iOS系统GCD学习(8):Dispatch Queue挂起恢复和目标指定
Dispatch Queue挂起恢复 dispatch queue可以被挂起和恢复。使用 dispatch_suspend函数来挂起,使用 dispatch_resume 函数来恢复。这两个函数的行为是如你所愿的。另外,这两个还是也可以用于dispatch source。 一个要注意的地方是,dispatch queue的挂起是block粒度的。换句话说,挂起一个queue并不转载 2013-06-04 11:17:24 · 853 阅读 · 0 评论 -
iOS DES ECB模式对称加密解密
最近忙于android和iOS的项目,写完了android的DES 的ECB模式加密解密(相关连接:http://blog.csdn.net/vipa1888/article/details/8086037),又回到了Ios上面,因为本人也是最近今年开始研究ios的,所以Ios上面好多东西都不懂,进过了半年的研究,终于吧ios的DES 的ECB模式对称加密解密搞定了,本人遇到的问题很严重的问题,网转载 2013-06-04 16:58:04 · 975 阅读 · 0 评论 -
获取IOS应用列表
获取运行程序列表// .h@interface UIDevice (ProcessesAdditions)- (NSArray *)runningProcesses;@end// .m#import @implementation UIDevice (ProcessesAdditions)- (NSArray *)runningProcesses {原创 2013-06-13 20:19:26 · 1080 阅读 · 0 评论 -
独立android开发者开发app如何盈利
独立android开发者开发app如何盈利?Android开发日益兴盛,随着google的大力推广和技术及其Android培训支持,android个人开发者或者Android独立开发者也都匆匆欲动加入到android个人APP开发的行列当中,当然我们期望的是大家都能有个好的回报和收成,也不枉辛辛苦独自开发androidapp的辛苦,但事实上却是大批的android个人开发者在android开发的道转载 2013-06-04 18:19:51 · 1054 阅读 · 0 评论 -
常见排序算法-采用Objective-c实现
1 // 2 // Sort.h 3 // Algorithm 4 // 5 // Created by on 11-9-30. 6 // Copyright 2011年 __MyCompanyName__. All rights reserved. 7 // 8 9 #import 10 11 @interface Sort : NSObject{12 13原创 2013-06-13 17:27:10 · 579 阅读 · 0 评论 -
iOS 排序算法总结、二分法查找
本文均是自己终结,查考网址:http://student.zjzk.cn/course_ware/data_structure/web/paixu/paixu8.5.1.1.htm还有一个:二分插入排序 平均时间O(n2) 稳定 1、插入排序在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。原创 2013-06-13 17:30:02 · 1842 阅读 · 0 评论 -
字符串匹配的KMP算法
字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。这种算法不太容易理解,网上有很多解释,但读起来都很原创 2013-06-13 17:28:29 · 611 阅读 · 0 评论 -
iOS开发常用的宏
#define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)#define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)#define SAFE_RELEASE(x) [x release];x=nil#define IOS_VERSION [[[UIDe原创 2013-06-17 15:36:48 · 908 阅读 · 0 评论 -
Xcode及Objective-C新特性
Xcode及Objective-C新特性基于Xcode4.4。- 成员方法无需前置声明以前我们调用一个未定义的成员方法时,xcode会警告说没有找到该函数。现在,编译器会先扫描@implementation内的方法,如果存在函数定义,则不出现该警告。- 自动添加属性以前我们声明属性@property后,还需要在.m文件中写@synthesize,很麻烦。现在,我原创 2013-06-17 15:42:45 · 830 阅读 · 0 评论 -
生成器模式——设计模式系列
生成器模式有两个核心概念,一个是Director(指导者)、一个是Builder(生成器)。Builder知道如何在缺少某些特定信息的情况下建造产品,Director知道Builder应该建造什么,以参数向其提供缺少的信息来建造特定产品。生成器关注分步创建复杂对象,在最后一步返回产品。以下以代码进行说明。//最终产品@interface Character : NSObject {转载 2013-06-17 17:44:35 · 598 阅读 · 0 评论 -
iOS7新特征汇总[05]初窥UIKit动力(UIKit Dynamics)
提醒:这里是新特征汇总博文链接:iOS7新特征汇总此图来此WWDC视频小引通过之前的4篇文章,笔者把iOS7中的涉及到的一些新特征做了一个简单的介绍。本文将带领大家初窥新特征里面的一个topic:UIKit动力(UIKit Dynamics)。注1:关于UIKit Dynamics的中文名称:我在这里叫做UIKit动力,也有人叫UIKit动力模型和UIKit动态,总感觉怪怪转载 2013-06-17 17:32:42 · 1507 阅读 · 0 评论 -
iOS7新特征汇总[01]新特征介绍1
提醒:这里是新特征汇总博文链接:iOS7新特征汇总 引言今天(北京时间2013年06月11日)凌晨,由库克引领的苹果发布了iOS7,本次新系统的发布可以说是iOS自发布以来最大的一次变革,iOS的设计由之前的拟物变为了现在的扁平化——这也标志着苹果真正的进入了库克时代。目前苹果只发布了iOS7的beta版本,虽然据闻有不少bug,不过无论你对iOS7的设计是吐槽也好,惊艳也罢,转载 2013-06-17 17:36:34 · 584 阅读 · 0 评论 -
数据库CoreData 与 SQLite Persistent Objects 框架
1、Core Data框架管理应用程序数据模型 Core Data提供对象的管理,使用Core Data,你可以创建模型对象,并管理这些对象。你管理这这些对象间的联系并修改数据。Core Data提供的内建SQLlite技术可以高效的管理数据。 使用Core Data可以:在库里存储和接收对象提供基本的undo/redo,提供数据model结构变化轻量级的迁移方案原创 2013-06-19 10:41:43 · 1204 阅读 · 0 评论 -
iOS的主要框架介绍
框架是一个目录,这个目录包含了共享库,访问共享库里代码的头文件,和其它的图片和声音的资源文件。一个共享库定义的方法或函数可以被应用程序调用。 IOS提供了很多你可以在应用程序里调用的框架。要使用一个框架,需要将它添加到你的项目中,你的项目才可以使用它。许多应用程序都使用了如Foundation、UIKit、和Core Graphics这些框架。根据你为应用程序选择的模版,相关的转载 2013-06-19 09:59:36 · 681 阅读 · 0 评论 -
NSPredicate的用法
一般来说这种情况还是蛮多的,比如你从文件中读入了一个array1,然后想把程序中的一个array2中符合array1中内容的元素过滤出来。正 常傻瓜一点就是两个for循环,一个一个进行比较,这样效率不高,而且代码也不好看。其实一个循环或者无需循环就可以搞定了,那就需要用搞 NSPredicate这个类了~膜拜此类~1)例子一,一个循环NSArray转载 2013-06-20 09:48:55 · 592 阅读 · 0 评论 -
关于 self = [super init];
先看一下官方文档给出的初始化示例代码:[plain] view plaincopy- (id)init { self = [super init]; // Call a designated initializer here. if (self != nil) { // 省略其他细节转载 2013-07-09 20:28:08 · 543 阅读 · 0 评论 -
iOS Voip 后台运行的原理
最近要做VoIP的iOS客户端,所以对这方面进行了一点研究。类似的有Skype,一般情况下程序进入到后台之后是无法接收到消息的,除非像QQ那样,通过NotificationCenter来实现,但是必须上架,比较麻烦。 通过研究Apple的官方文档,发现对Audio 和 VoIP 还是给了后台运行的机会。通过在info.plist文件里面设置UIBackgroundModes来设置这转载 2013-06-25 15:53:38 · 1000 阅读 · 0 评论