Fork me on GitHub

2012年2月9日

摘要: iOS可通过两种方式播放声音:播放压缩的声音文件,比如mp3文件,一般使用播放声音中提到的方法,适用于播放时间较长,比如大于30秒,AVAudioPlayer可以提供更多的控制特性,比如暂停等等播放系统声音,比如翻页的哗啦声,应该使用播放系统声音的方法,因为压缩的声音文件比播放wav等非压缩声音文件在播放前消耗更多的处理器资源,这样的声音还要频繁的播放,而且,因为系统声音文件都较小,一般小于30秒,因此即使压缩格式,也不会节省多少存储空间。本文介绍后者,播放系统声音。系统声音属于AudioToolbox框架,因此使用前,需要给项目安装框架:另外,需要引用头文件:#import <Audi 阅读全文
posted @ 2012-02-09 16:51 pengyingh 阅读(4217) 评论(1) 推荐(0)
摘要: 这是在ios开发中常见的功能。即,touch移动事件,是移动到当前视图的子视图中,还是移动到当前视图以外了。办法是,继承UIView,覆盖touchesMoved方法:- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch *touch=[touches anyObject]; if (![self pointInside:[touch locationInView:self] withEvent:nil]) { NSLog(@"touches moved outside the view&q 阅读全文
posted @ 2012-02-09 16:49 pengyingh 阅读(282) 评论(0) 推荐(0)
摘要: 使用Grails和Groovy,实现了这样的需求:zip文件上传zip文件上传后,在zip文件中加入自定义文本文件在Grails实现复杂的数据录入上实现的本示例。示例如图:准备工作:文件上传首先说一下文件上传,在Grails中,借助Spring MVC的底层支持,实现还是很容易的。视图:<body><div style="margin-left: 15px;"><g:message code="${flash.message}" /><g:form action="uploadFile" me 阅读全文
posted @ 2012-02-09 15:33 pengyingh 阅读(1518) 评论(0) 推荐(0)
摘要: 以下内容翻译自:http://code.google.com/p/cocoaasyncsocket/CocoaAsyncSocket支持tcp和udp。其中:AsyncSocket类是支持TCP的AsyncUdpSocket是支持UDP的AsyncSocket是封装了CFSocket和CFSteam的TCP/IP socket网络库。它提供了异步操作,本地cocoa类的基于delegate的完整支持。主要有以下特性:队列的非阻塞的读和写,而且可选超时。你可以调用它读取和写入,它会当完成后告知你自动的socket接收。如果你调用它接收连接,它将为每个连接启动新的实例,当然,也可以立即关闭这些连接 阅读全文
posted @ 2012-02-09 15:29 pengyingh 阅读(379) 评论(0) 推荐(0)
摘要: [self performSelector:@selector(initContentView) withObject:nil afterDelay:2];在这里会延时2秒执行initContentView方法。有时候,需要取消延时操作。尤其当这个延时比较长的时候。比如:延时10秒显示一个动画,可未到10秒,用户操作退出了当前的视图演示10秒隐藏当前的工具条菜单,在此期间,又对菜单做了操作,也许只是touch了菜单区域上述情况,都需要取消延时调用,后一种情况,还需要启动新的延时调用。解决办法很简单:[NSObject cancelPreviousPerformRequestsWithTarge 阅读全文
posted @ 2012-02-09 15:25 pengyingh 阅读(641) 评论(0) 推荐(0)
摘要: 在使用NSOperationQueue简化多线程开发中介绍了iOS的操作队列使用方法。这里补充一下队列的优先级功能。假设现在队列中有多个操作(NSOperation),现在再向队列中加入新的操作,并且希望新增加的操作排在未执行操作的最前面。这时就需要设置操作的优先级了。编写了个最简单的NSOperation,头文件:#import <Foundation/Foundation.h>@interface MyOperation : NSOperation{ NSString *name;}@property (nonatomic,retain) NSString *name;@end 阅读全文
posted @ 2012-02-09 15:22 pengyingh 阅读(170) 评论(0) 推荐(0)
摘要: 使用NSCondition,类似Java中的wait,notify机制 可以实现多线程的同步,即,可实现生产者消费者问题。基本思路是,首先要创建公用的NSCondition实例。然后:消费者取得锁,取产品,如果没有,则wait,这时会释放锁,直到有线程唤醒它去消费产品;生产者制造产品,首先也是要取得锁,然后生产,再发signal,语义等同Java的notify,这样可唤醒wait的消费者。示例代码如下:@interface ViewController()-(void)createProducer;-(void)createConsumer;@end@implementation Vie... 阅读全文
posted @ 2012-02-09 15:03 pengyingh 阅读(1378) 评论(0) 推荐(0)
摘要: 多线程开发是一件需要特别精心的事情,即使是对有多年开发经验的工程师来说。为了能让初级开发工程师也能使用多线程,同时还要简化复杂性。各种编程工具提供了各自的办法。对于iOS来说,建议在尽可能的情况下避免直接操作线程,使用比如NSOperationQueue这样的机制。可以把NSOperationQueue看作一个线程池,可往线程池中添加操作(NSOperation)到队列中。线程池中的线程可看作消费者,从队列中取走操作,并执行它。你可以设置线程池中只有一个线程,这样,各个操作就可以认为是近似的顺序执行了。为什么说是近似呢,后面会做解释。编写最简单的示例先写个最简单的示例。编写一个NSOperat 阅读全文
posted @ 2012-02-09 14:42 pengyingh 阅读(3913) 评论(0) 推荐(0)
摘要: iPhone应用开发中关于NSRunLoop的概述是本文要介绍的内容,NSRunLoop是一种更加高明的消息处理模式,他就高明在对消息处理过程进行了更好的抽象和封装,这样才能是的你不用处理一些很琐碎很低层次的具体消息的处理,在NSRunLoop中每一个消息就被打包在input source或者是timer source中了,来看详细内容。1.什么是NSRunLoop我们会经常看到这样的代码:- (IBAction)start:(id)sender{pageStillLoading = YES;[NSThread detachNewThreadSelector:@selector(loadPag 阅读全文
posted @ 2012-02-09 14:30 pengyingh 阅读(18710) 评论(2) 推荐(0)
摘要: NSArray 对象保存NSString *strOne = @"Persistent data1";NSString *strTwo = @"Persistent data 2";NSMutableArray *persistentArray = [[NSMutableArray alloc] init];[persistentArray addObject:strOne];[persistentArray addObject:strTwo];NSArray *filePathArray = NSSearchPathForDirectoriesInDo 阅读全文
posted @ 2012-02-09 12:16 pengyingh 阅读(223) 评论(0) 推荐(0)
摘要: #import "FirstUIAppDelegate.h" @implementation FirstUIAppDelegate @synthesize window; - (void)applicationDidFinishLaunching:(UIApplication *)application { // Override point for customization after application launch //[self postdata]; [self setupThread]; [window makeKeyAndVisible]; } -(voi 阅读全文
posted @ 2012-02-09 11:05 pengyingh 阅读(265) 评论(0) 推荐(0)
摘要: 在iphone程序中实现截屏的一种方法://导入头文件#import QuartzCore/QuartzCore.h//创建一个基于位图的图形上下文并指定大小为CGSizeMake(200,400)UIGraphicsBeginImageContext(CGSizeMake(200,400));//renderInContext 呈现接受者及其子范围到指定的上下文[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];//返回一个基于当前图形上下文的图片UIImage *aImage =UIGraphicsGetImage 阅读全文
posted @ 2012-02-09 10:57 pengyingh 阅读(1849) 评论(0) 推荐(1)

导航