iOS开发之实战篇
yhawaii
做过java开发,2011年起做iOS,专注于移动开发
展开
-
如何实现一个精准的Timer
如何实现一个精准的Timer在timer设计中,假如时间精确度大于500毫米,就可以认为是bug。我们知道,NSTimer的可以精确到50-100毫秒,假如需要更精确的timer,应该如何实现呢?参考资料:NSTimer你真的会用了吗Experiments with precise timing in iOSHigh Precision Timers in iOS原创 2014-09-18 21:24:53 · 6625 阅读 · 0 评论 -
iOS后台播放音乐
iOS4之后就支持后台播放音频了。只需下面两步就可以实现后台播放音频操作了:1、在Info.plist中,添加"Required background modes"键,其值设置如下图所示:2、添加AVFoundation框架,然后再添加如下两段代码添加后台播放代码://后台播放音频设置 AVAudioSession *session = [AVAudioSess原创 2012-07-26 11:49:57 · 35357 阅读 · 12 评论 -
Objective-C中trim的实现
在java中,有trim的系统实现(将字符串的首尾空格去掉),但在iOS开发中,却没有找到现成的trim方法的实现,只有自己实现该方法了,下面是trim方法的实现:NSString *string = @" spaces in front and at the end "; NSString *trimmedString = [string stringByTrimmingChara...原创 2012-08-16 09:29:08 · 6178 阅读 · 1 评论 -
Objective-C的delloc方法中,将对象置为nil和将对象release的区别
阅读别人代码的时候,经常会在delloc方法中,看到有的人释放对象使用self.xxx=nil,有些人使用[xxx release];就忍不住想查看一下这两者的区别;搜索资料之后,看到网上找到如下说法:self.xxx = nil;等价于[xxx release]; xxx = [nil retain];所以以后在delloc方法中,还是尽量用self.xxx = nil原创 2012-07-25 15:14:21 · 2261 阅读 · 1 评论 -
iOS常见异常Exec_Bad_Access问题解决办法
在iOS开发中,经常遇到Exec_Bad_Access异常,导致程序奔溃问题,一般这个问题都是因为过早的release对象,然后又对该对象发送消息导致这个问题。可以通过在Xcode中设置NSZombieEnabled变量来获取一些详细信息。Xcode 4之前的做法是:1 在XCode界面中,双击Executables中的可执行文件,将会弹出一个设置对话框2 在Arguments选项中的原创 2012-07-26 15:44:45 · 5978 阅读 · 1 评论 -
iOS annotation
1. 添加到map view的子视图不会随地图的移动而移动,map view会固定其子视图的位置。如果要添加随着地图移动的子视图,可以使用annotations和overlays。annotation用来显示由一个经纬度定义的位置,而overlay则是由多个点所定义或者包含了许多连续的图形。 2.在地图上显示annotation,需要提供两个对象annotation object)原创 2012-05-10 09:59:40 · 7587 阅读 · 0 评论 -
Objective-C @encode关键字
最近一段时间比较忙,抽空看了一下设计模式(主要是看两本书,《大话设计模式》和《Objective-C编程之道:iOS设计模式解析》 );研究了一下3D数学和opengl,开始学习cocos2D,感觉时间总是很零散,很不够用,所以很久都没有写blog了。闲话少扯,言归正传。昨天被一个同事问到,如果把一些数(int ,BOOL类型等)封装到NSNumber对象中,而这些NSNumber类型的数原创 2012-11-25 18:36:38 · 15329 阅读 · 5 评论 -
Objective-C中单例类的声明
在Objective-C中,使用单例模式,定义一个单例类的过程如下:1、定义一个static的类对象,初始值为nil2、在工厂方法中(一般都是以“sharedInstance”或者"sharedManager"命名),仅仅在第一步中声明的static类对象为空的情况下,使用allocWithZone:方法创建一个新对象3、重写allocWithZone:方法原创 2012-05-11 16:13:52 · 2194 阅读 · 0 评论 -
如何理解 iOS Delegate (委托)设计模式
转载自:http://leopard168.blog.163.com/blog/static/168471844201111411729597/iOS 编程语言是 Objective-C, 简称 OC。 谈起 OC的特性,人们常说,OC 不支持多继承。但 Delegate 弥补了这个缺陷。 有了Delegate, 在声明对象时,可以使其遵循多个协议。 从而解决了多继承问题。 Dele转载 2012-04-25 13:46:14 · 3103 阅读 · 0 评论 -
Objective-c 中 nil, Nil, NULL和NSNull的区别
nil: A null pointer to an Objective-C object.( #define nil ((id)0) )Nil: A null pointer to an Objective-C class.NULL: A null pointer to anything else, is for C-style memory pointers.原创 2012-04-09 20:32:39 · 14114 阅读 · 2 评论 -
cocoa多线程浅析
OS 支持多个层次的多线程编程,层次越高的抽象程度越高,使用起来也越方便,也是苹果最推荐使用的方法。下面根据抽象层次从低到高依次列出iOS所支持的多线程编程范式:1, Thread;2, Cocoa operations;3, Grand Central Dispatch (GCD) (iOS4 才开始支持)下面简要说明这三种不同范式:Thread 是这三种范式里面相对轻量转载 2012-03-30 23:10:12 · 2258 阅读 · 0 评论 -
文件加载和保存
1、使用属性列表保存对象:在Cocoa中,与一类名为属性列表的对象,常简称为plist。这些列表包含Cocoa知道如何操作的一组对象。具体来讲,Cocoa知道如何将它们保存到文件中并进行加载。属性列表类包括:NSArray,NSDictionary,NSString和NSData,以及它们的变体(Mutable)eg:NSAutoreleasePool *pool = [[NSAu原创 2012-03-21 18:57:16 · 2644 阅读 · 0 评论 -
iOS Block学习
iOS4已经直接支持blocks,很有必要学习一下。在ios中,将blocks当成对象来处理,它封装了一段代码,这段代码可以在任何时候执行。Blocks可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。它和传统的函数指针很类似,但是有区别:blocks是inline的,并且它对局部变量是只读的。Blocks的定义: int (^myBlock) (原创 2012-05-11 11:45:31 · 15555 阅读 · 1 评论 -
iOS多线程下使用sqlite
sqlite多线程概述这几天研究了一下SQLite这个嵌入式数据库在多线程环境下的应用,感觉里面的学问还挺多,于是就在此分享一下。先说下初衷吧,实际上我经常看到有人抱怨SQLite不支持多线程。而在iOS开发时,为了不阻塞主线程,数据库访问必须移到子线程中。为了解决这个矛盾,很有必要对此一探究竟。关于这个问题,最权威的解答当然是SQLite官网上的“Is SQLite th转载 2013-05-18 11:36:16 · 3391 阅读 · 0 评论 -
iOS获取设备剩余存储空间代码片段
首先需要引入相关的头文件,引入头文件代码如下:#include #include 获取剩余存储空间函数如下:+ (NSString *) freeDiskSpaceInBytes{ struct statfs buf; long long freespace = -1; if(statfs("/var", &buf) >= 0){原创 2013-01-15 09:37:47 · 12522 阅读 · 0 评论 -
获取iphone的IP地址源码
转载自:http://blog.csdn.net/zougangx/article/details/6215595定义了几个方法,获取iphone的IP地址。IPAdress.h[cpp] view plaincopy#define MAXADDRS 32 extern char *if_names[MAX转载 2012-12-18 10:10:58 · 2664 阅读 · 0 评论 -
NSInvocation使用示例
一、概述在 iOS中可以直接调用 某个对象的消息 方式有2种第一种方式是使用NSObject类提供的performSelector系列方法还有一种方式就是使用NSInvocation进行动态运行时的消息分发,动态的执行方法,相信大家一定经常使用NSObject类提供的performSelector系列方法,在这里就不再对此进行描述了,今天主要是分享一下使用NSInvoc原创 2012-12-17 11:44:29 · 7197 阅读 · 0 评论 -
ZBarSDK–读取条形码信息
ZBarSDK–读取条形码信息介绍:ZBarSDK是一个开源的SDK,可从这里下载到源码,该SDK实现了识别和读取各种条形码,包括EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, Interleaved 2 of 5 和 QR Code。帮助文档:http://zbar.sourceforge.net/iphone/sdkdo转载 2012-07-05 16:24:49 · 5026 阅读 · 0 评论 -
如何让UITextView一直显示滚动条
http://www.cocoachina.com/bbs/simple/?t64154.html//头文件#import @interface TextView : UIView{ UITextView *boxText;}- (id)initWithFrame:(CGRect)frame withContext:(NSString *)text;@end原创 2012-06-14 15:52:11 · 6952 阅读 · 0 评论 -
iOS视频播放代码
/** @method 播放电影 */-(void)playMovie:(NSString *)fileName{ //视频文件路径 NSString *path = [[NSBundle mainBundle] pathForResource:fileName ofType:@"mp4"]; //视频URL NSURL *url = [NSURL fileU原创 2012-05-25 11:17:53 · 41004 阅读 · 2 评论 -
IPad开发工具,资料整理
本文介绍一些有帮助的IPad应用,能够帮助我们简化设计开发IPad应用。 1.iPad Dev Center 文档中心和SDK。这里有编程指南、案例代码,以及SDK4. 2.Dropbox Dropbox是一个免费的服务,它可以让你带着你的图片、文档、视频到任何原创 2012-05-04 12:58:54 · 1993 阅读 · 0 评论 -
Apple Push Notification service
http://www.cnblogs.com/chenjunbiao/archive/2011/07/28/2119259.html转载 2012-05-03 18:11:03 · 680 阅读 · 0 评论 -
In App Purchases(IAP 应用程序內购买): 完全攻略
应用程序内购买:http://www.cocoachina.com/bbs/read.php?tid=69165&keyword=%B7%D6%C0%E0转载 2012-04-29 14:46:24 · 1748 阅读 · 0 评论 -
Mac OS X安装Git
一、安装Git由于mac git的地址http://code.google.com/p/git-osx-installer/被墙,被迫使用源码安装,源码可以从http://kernel.org/pub/software/scm/git/下载,编译源码需要先安装xcode,参考http://developer.apple.com。编译安装1、解压tar xjvf git-1.7.原创 2012-04-28 11:43:56 · 36151 阅读 · 2 评论 -
Xcode中使用svn时,报证书验证错误Error validating server certificate for
今天使用Xcode自带的svn客户端时,总是连接不上服务器,报如下错误:Error validating server certificate for ‘https://svn2.assembla.com:443’: – The certificate is not issued by a trusted authority. Use the fingerprint to validate原创 2012-04-26 09:38:41 · 19028 阅读 · 0 评论 -
Core Data 学习教程
http://www.cocoachina.com/iphonedev/sdk/2010/1126/2397.html转载 2012-04-11 23:25:41 · 1156 阅读 · 0 评论 -
Objective-C的反射
我第一次接触Java的时候就觉得整个反射包都很新颖,它使得Java和解释型的脚本语言更接近了,与此同时也拉开了和主流的C和C++的距离。在运行时可以窥视到一个对象的类元数据真的很不可思议,尽管这些可能不会在日常应用编程中经常使用到。从Java转到Objective-C的程序员应该会乐见Objective-C也支持反射。实际上,Objective-C有很多诸如动态改变类定义以及创建一个新类的动态特征原创 2012-03-22 16:24:26 · 6636 阅读 · 3 评论 -
main函数的参数
main函数可以不带参数,也可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv。因此,main函数的函数头可写为: main (argc,argv)C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组。加上形参说明后,main函数的函数头应写为:原创 2012-03-16 15:37:41 · 51189 阅读 · 7 评论 -
iPhone开发学习笔记一 : iPhone开发常见名词解释
1、SpringBoard : iPhone版的Finder2、XIB文件:在Macintosh上又称NIB文件,存储预定义、可寻址的用户界面类原创 2012-03-11 23:18:52 · 979 阅读 · 0 评论 -
Objective-C与JavaScript的交互
http://www.cnblogs.com/zhuqil/archive/2011/08/03/2126562.html开源代码:https://github.com/marcuswestin/WebViewJavascriptBridgehttps://github.com/coolbloke1324/iOS-JavaScript-Bridge转载 2012-05-07 11:43:59 · 1008 阅读 · 0 评论 -
Mac OS X Lion10.7 安装 xcode3.2.5的方法
官方给出的解释是:lion10.7安装xcode4.X雪豹安装xcode3.X如果在lion10.7上安装xcode3.X的话,安装过后,在application中找不到xcode.app文件。如果在lion10.7上安装xcode4.x的话,运行以前的xcode3.x可能会有问题。解决办法:1、把xcode3.x转换为可读写的dmg。打开磁盘工具转换dmg。应原创 2012-04-23 17:14:45 · 2566 阅读 · 0 评论 -
iOS 异步加载图片简单示例
iPhone 异步加载图片AsyncImageView.h文件@interface AsyncImageView : UIView {NSURLConnection* connection;NSMutableData* data;}@endAsyncImageView.m文件@implementation AsyncImageView - (转载 2012-05-27 21:34:56 · 3969 阅读 · 0 评论 -
iOS电影播放器—MPMoviePlayerController
http://blog.csdn.net/iukey/article/details/7311126 PMoviePlayerController 与AVAudioPlayer有点类似,前者播放视频,后者播放音频,不过也有很大不同,MPMoviePlayerController 可以直接通过远程URL初始化,而AVAudioPlayer则不可以。不过大体上用起来感觉差不多。废话少说进入体验...转载 2012-05-24 21:27:21 · 17988 阅读 · 2 评论 -
ios UIScrollView原理
UIScrollView 原理 在滚动过程当中,其实是在修改原点坐标。当手指触摸后, scroll view会暂时拦截触摸事件,使用一个计时器。假如在计时器到点后没有发生手指移动事件,那么 scroll view 发送 tracking events 到被点击的 subview。假如在计时器到点前发生了移动事件,那么 scroll view 取消 tracking 自己发生滚动。转载 2012-06-12 18:48:16 · 2598 阅读 · 1 评论 -
iOS手势
在 iPhone 或 iPad 的开发中,除了用 touchesBegan / touchesMoved / touchesEnded 这组方法来控制使用者的手指触控外,也可以用 UIGestureRecognizer 的衍生类別来进行判断。用 UIGestureRecognizer 的好处在于有现成的手势,开发者不用自己计算手指移动轨迹。UIGestureRecognizer的衍生类別有以下几种原创 2012-06-12 11:28:30 · 2161 阅读 · 0 评论 -
iOS程序中调用系统自带应用(短信,邮件,浏览器,地图,appstore,拨打电话)
在程序中调用系统自带的应用,比如我进入程序的时候,希望直接调用safar来打开一个网页,下面是一个简单的使用:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ self.window = [[[UIWindow...原创 2012-05-21 14:59:39 · 27658 阅读 · 2 评论 -
iOS开发键盘弹出时遮住输入框的问题
在UITextFieldDelegate委托中,修改view的frame-(BOOL)textFieldShouldReturn:(UITextField*)textField { // When the user pressesreturn, take focus away from the text field so that the keyboard转载 2012-06-09 15:54:43 · 1412 阅读 · 0 评论 -
CoreTelephony框架
iOS 4.0 的官方 API 里头,多了一个叫做 Core Telephony 的 framework;一直以来 Core Telephony 都是 private API,现在开放出来,但是从文件来看,里头根本没有几行,既没有告诉你应该怎么用,也没有范例,你从 framework 里头寥寥四个 class 的 header 中,也搞不清楚,究竟可以把这个东西用在什么用途上。目前只知道可转载 2012-05-20 16:55:22 · 3431 阅读 · 0 评论 -
LLDB和GDB的区别
http://lldb.llvm.org/lldb-gdb.html原创 2012-05-20 15:56:58 · 6518 阅读 · 0 评论 -
iOS extern使用教程
ios开发使用extern访问全局变量使用extern关键字法: 1 、新建Constants.h文件(文件名根据需要自己取),用于存放全局变量; 2、 在Constants.h中写入你需要的全局变量名,但是在定义时不能对其进行初始化,否则就出错例如: NSString *url;//指针类型转载 2012-06-07 14:12:00 · 17755 阅读 · 0 评论