摘要: 1.CVOpenGLESTextureCacheCreateTextureFromImage为什么该函数使用系统生成的CVImageBufferRef 时速度很快,而本人使用由原始的rgb生成 CVImageBufferRef,或者将系统原始的CVImageBufferRef -> BGRA ->CVImageBufferRef,这两种情况下生成的CVImageBufferRef 则要耗费几十毫秒,在我的试验平台下,耗时30ms。2.glDrawArrays 使用该函数做图像渲染时,如果数据源为BGRA, 则速度很快,而当数据源为RGB时,又要耗时20ms在本人的试验平台上。这两个 阅读全文
posted @ 2012-07-26 14:17 CoderZHY 阅读(459) 评论(0) 推荐(0) 编辑
摘要: 今天遇到了这个实在变态的问题,很棘手关键时候啊,可是毫无头绪。开始试着从网上查找一下,答案很多,也很专业,说是因为MyClass没有在源代码中直接用到,又因为动态加载的缘故,导致运行时找不到该类,感觉实在不可思议。因为,我定义的类明明直接用到了,可是还是有问题。后来又看到有人说,他只是将MyClass代码拷贝出来,之后从项目中删除MyClass.h和MyClass.m,接着新建一个同名的MyClass类,再将之前拷出的类粘贴过去,结果问题就解决了。受此启发,我考虑将MyClass.m 和MyClass.h文件从项目中删除,然后再使用 add files to 添加进来。哈哈,问题顺利解决,实在 阅读全文
posted @ 2012-05-10 18:13 CoderZHY 阅读(2160) 评论(0) 推荐(0) 编辑
摘要: iOS为了节省电量,对电池等资源的使用是非常苛刻的。因此,WiFi 作为耗电大户显然被限制使用,可是对大多数程序进入后台模式后依然需要连接网络以及下载数据,这时就需要保持WiFi 处于active。在应用程序的Info.plist中将UIRequiresPersistentWiFi设为true,即使程序进入后台模式,依然可以使用WiFi。而当屏幕被锁时,系统认为设备处于空闲状态,无论如何设置WiFi都会被关闭,很无奈啊。详细资料参考http://www.apple.com.cn/developer/iphone/library/documentation/iPhone/Conceptual/i 阅读全文
posted @ 2012-05-09 19:02 CoderZHY 阅读(664) 评论(0) 推荐(0) 编辑
摘要: apple官方文档说extension是 匿名category,从形式上extension确实是不具名的category,但事实上差别很大。category就不细说,主要是期待subclass,为现有类动态添加新的方法。而引入extension的目的主要是Publicly-Readable, Privately-Writeable Properties,即实现外部只读,内部可写。如下所示,// .h@interface MyClass : NSObject@property (readonly, retain) NSString* myString;@end// .m@interface My 阅读全文
posted @ 2012-05-04 17:22 CoderZHY 阅读(2428) 评论(0) 推荐(0) 编辑
摘要: 由于url支持26个英文字母、数字和少数几个特殊字符,因此,对于url中包含非标准url的字符时,就需要对其进行编码。iOS中提供了函数stringByAddingPercentEscapesUsingEncoding对中文和一些特殊字符进行编码,但是stringByAddingPercentEscapesUsingEncoding的功能并不完善,对一些较为特殊的字符无效。而对这些字符则可以使用CFURLCreateStringByteAddingPercentEscapes函数,下面我们对其进行封装,提供一个完善的url编码函数。NSString* encodeURL(NSString* u 阅读全文
posted @ 2012-04-28 16:34 CoderZHY 阅读(4270) 评论(0) 推荐(2) 编辑
摘要: 今天使用AudioFileOpenWithCallbacks异步读取文件时,总是提示AudioFileOpenWithCallbacks第三个和第五个参数类型不对,也就是AudioFile_WriteProc和AudioFile_SetSizeProc两个异步函数,可是明明是按照文档定义的,奇怪的很。文档里这两个函数分别声明为typedef OSStatus (*AudioFile_WriteProc) ( void *inClientData, SInt64 inPosition, UInt32 requestCount, ... 阅读全文
posted @ 2012-04-25 19:07 CoderZHY 阅读(573) 评论(0) 推荐(0) 编辑
摘要: 在调试程序的过程中,有时候我们只是需要知道这个异常或者错误发生在源程序的哪个文件的哪一行,而不是为每一个可能的异常和错误都定义一个唯一的错误码,错误程序过度膨胀后,也会影响程序的可读性。这里,使用一个简单的宏printLineNumber,即可显示当前所在的行和源文件#define FILENAME NSString * fileName = [NSString stringWithUTF8String:__FILE__]#define printLineNumber FILENAME ;\printf("line %d in %s:",__LINE__,[[fileNam 阅读全文
posted @ 2012-04-24 18:05 CoderZHY 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 这些对比主要基本本地媒体文件,在使用这两项技术的过程中笔者发现一个奇怪的问题,即分别使用这两种不同的技术获取媒体文件的容量时,得到的数据不同,一般来说时audio file stream得到的数据小于 audio file。而audio file得到的数据等于使用 nsfilemanager 技术得到的数据大小,因此可知使用audio file stream技术得到的数据大小有误,可能是因为其主要用来播放在线媒体的缘故,处理的环境更为复杂,导致不够准确。更有甚者,使用 audio file技术可以获得大小的本地文件,使用audio file stream 技术却无法获得大小。以下附上上文中提到 阅读全文
posted @ 2012-04-23 17:06 CoderZHY 阅读(757) 评论(0) 推荐(0) 编辑
摘要: 一直都有发现一个问题,即调用audioqueuestart成功后,立即调用audioqueuegetcurrenttime会返回失败,错误码为kAudioQueueErr_InvalidRunState。这就很奇怪了调用audioqueuegetprorperty函数返回kaudioqueue_isrunning为真,也就是这时audioqueue已经在运行了,而audioqueuegetcurrenttime的返回值却表示audioqueue并未运行,很是奇怪,只有调用一下CFRunLoopRunInMode函数之后,才可以获取audioqueue的运行时间。太奇怪了,百思不得其解。 阅读全文
posted @ 2012-04-20 11:00 CoderZHY 阅读(817) 评论(0) 推荐(0) 编辑
摘要: 最近一直在搞音频相关的项目,很羡慕与酷我听听瞬时的启动速度,而我自己的在线音频需要3-4s的启动时间,本地音频则需要1-2s的启动时间。有一些强迫症的笔者希望能够大大提升audioqueue的启动速度,开始以为是本地文件的加载速度不行,因为一开始使用的是cfreadstream技术,是一种异步文件读取技术,所以初步假定问题在这。接下来使用了CFReadStreamCreateWithBytesNoCopy技术和NSTimer技术,但是并无明显的速度提升。后来经过多次的定位,发现audioqueuestart函数的启动就需要花费1-2s(这次数字都是在本人电脑上测出的,不具有普遍性),当下觉得很 阅读全文
posted @ 2012-04-20 10:49 CoderZHY 阅读(828) 评论(0) 推荐(0) 编辑