全系列文章索引:
1、ios关于文件操作 获取 文件大小
ios关于文件操作 获取 文件大小
http://blog.csdn.net/xlxying/article/details/8047695
c语言 实现
#include "sys/stat.h"
- (long long) fileSizeAtPath:(NSString*) filePath{
struct statst;
if(lstat([filePathcStringUsingEncoding:NSUTF8StringEncoding], &st) == 0){
returnst.st_size;
}
return 0;
}
objective-c语言实现
-(long long) fileSizeAtPath:(NSString*) filePath{
NSFileManager*manager = [NSFileManager defaultManager];
if ([managerfileExistsAtPath:filePath]){
return [[managerattributesOfItemAtPath:filePath error:nil] fileSize];
}
return 0;
}
如果将两种方法循环1000次,我们就可以发现两者之间巨大的性能差距了,在我的测试环境中,结果如下,c函数的耗时仅是第一种方法的5%,在此推荐c语言
一个空的文件夹 其中获取大小为68k,应该是系统文件吧。
2、objective-c中NSString默认编码格式不是utf-8
iOS NSString转换为UTF-8编码
http://blog.csdn.net/u011872945/article/details/11771651
3、Audio Queue开发——退出程序时要关闭音频通道
使用Audio Queue Service进行音频操作时,使用了AudioQueueNewOutput方法,来开辟一个Audio Queue输出到硬件的通道,开启后,在程序退出前,一定要用AudioQueueDispose方法释放通道(而且最好是设置为YES,即立即释放),不然程序无法再次启动该通道,除非IOS重启。
4、Audio Queue开发——Buffer缓存设置
AudioQueue开发时,需要用到一个缓冲池队列,该队列的预读取只需要一次就行了,不需要放在play方法中,只需放在初始化方法中就行。
5、objective-c setter方法调用时机
在保存类成员的数据时,需要使用self.***的操作来调用setter方法,才能最终保存数据。
6、对象nil状态的使用
若一个对象需要重复使用,即alloc后会release,那么在release后,最好将其置为nil,才能利用是否等于nil来判断对象状态。
7、IOS多线程——GCD使用
使用GCD
http://blog.devtang.com/blog/2012/02/22/use-gcd/
iOS多线程编程之GrandCentral Dispatch(GCD)介绍和使用
http://blog.csdn.net/totogo2010/article/details/8016129
GCD的使用方法
http://beauty-soft.net/blog/ceiba/object-c/20130513/639.html
GCD之dispatchqueue
http://www.cnblogs.com/scorpiozj/archive/2011/07/25/2116459.html
GCD介绍(一):基本概念和Dispatch Queue
http://www.dreamingwish.com/dream-2012/gcd介绍(一)-基本概念和dispatch-queue.html
8、IOS——GDataXML使用
如何在项目中设置使用GDataXML解析类库
http://www.cnblogs.com/lovecode/articles/2305416.html
IOS学习笔记27—使用GDataXML解析XML文档
http://blog.csdn.net/ryantang03/article/details/7868246
【iOS开发】GDataXML使用实例
http://blog.csdn.net/qbins/article/details/12043813
9、objective-c选择器Selector
IOS SEL (@selector)原理及使用总结(一)
http://blog.csdn.net/fengsh998/article/details/8612969
【IOS】Object-C中的Selector概念
http://blog.sina.com.cn/s/blog_735065f90100yopd.html
10、IOS中延时执行的几种方式
iOS延时执行的几种方法
http://blog.csdn.net/czcty/article/details/7730089
IOS中延时执行的几种方式的比较和汇总
11、Xcode工程中添加js文件,需要添加到copy Bundle Resources
12、OC中^符号使用
用^符号支持将一个代码段以参数形式添加到方法中;
13、IOS内存管理
Autorelease只能用于属性,不能用于内部成员变量,因为内部成员变量赋值时不会有retain方法来增加引用计数。
对于引用计数:
Self.属性=时,会增加一次引用计数。若是self.test = [[NSString alloc] init];最终引用计数是2,而不是1
所以正确的声明方式是:
_test =[[NSString alloc] init];
或者self.test =[[[NSString alloc] init] autorelease];
14、UIImageView不支持多组图片载入播放
使用UIImageView播放几组图片以实现动画效果时,同一个UIImageView对象实例无法切换载入多组图片。
究其原因:是因为UIImageView的AnimationImage属性是一个NSArray类型,而不是NSMutableArray,故一旦完成初始化,其数组大小就已经确定了,数组长度不再可变。
15、IOSNSTimer线程无法在委托方法之外停止
NSTimer无法在线程的委托方法之外停止。
16、在IOS4.3中添加AdSupport.framework会引起dyld ‘dyld_fatal_error
将库引用参数设置为可选即可解决。
17、Failedto get the task for process xxx
证书问题,project与target的调试证书都必须是开发者证书,ADHOC的证书会出现此问题。
18、IOSNSInvocation使用
NSInvocation的使用
http://www.cnblogs.com/pengyingh/articles/2359199.html
iOS通知中心NSNotificationCenter & NSNotification
http://blog.csdn.net/crayondeng/article/details/9372079
19、UIPopoverController使用
UIPopoverController的使用
http://www.cnblogs.com/wengzilin/archive/2012/03/13/2393675.html
UIPopoverController的使用心得
http://blog.csdn.net/smking/article/details/7683363
20、Xcode条件编译
条件编译不是多高深的技术,却很实用,可以帮助我们针对不同的target编译出不同的版本。比如,希望同一份代码编译出完全版和功能受限的免费 版,以减小维护成本。
首先要在某个project或者target上get info。在Build页中,找到GCC 4.2 - Preprocessing下面的Preprocessor Macros,双击,在弹出来的对话框中增加一个值,例如FREE_VERSION。确定。
然后在代码中加入如下语句:
#if !defined(FREE_VERSION)
...//do for full version
#else
...//do for free version
#end