美文网首页Kevin的IOS开发专题
IOS开发问题索引(三)

IOS开发问题索引(三)

作者: Kevin_Junbaozi | 来源:发表于2018-01-11 23:58 被阅读44次

    全系列文章索引:

    IOS开发问题索引(一)

    IOS开发问题索引(二)

    IOS开发问题索引(三)

    IOS开发问题索引(四)

    IOS开发问题索引(五)

    IOS开发问题索引(六)

    IOS开发问题索引(七)

    IOS开发问题索引(八)

    IOS开发问题索引(九)


    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中延时执行的几种方式的比较和汇总

    http://bluevt.org/?p=128

    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

    相关文章

      网友评论

        本文标题:IOS开发问题索引(三)

        本文链接:https://www.haomeiwen.com/subject/nzlxoxtx.html