美文网首页
散点知识备忘

散点知识备忘

作者: Hedy1203 | 来源:发表于2019-01-13 15:40 被阅读0次

    #import 与 @import 区别

    #import负责导入程序所需的文件的信息导入到程序中,随着程序所需的文件越来越多,程序就要导入更多的文件,这就带来了越来越长的编译时间,而且有大量重复的。为了解决这个问题可以采用以下办法解决,创建.pch文件,在该文件中加入以下代码。

    #ifdef __OBJC__

        #import <Foundation/Foundation.h>

    #endif

    此时仍然会导入Foundation框架,但是可以很大程度的加快编译速度。但是这也会带来一个新的问题,维护.pch文件是很低效的。

    因此引入了@import指令

    这段代码告诉编译器需要使用Foundation框架,之后编译器会优化预编译头文件和缓存编译结果的过程。同时,文件中不用再明确引用框架--编译器会根据@import自动导入相应框架。

    需要注意的是该指令现阶段还只能用于Apple提供的框架,如果导入的是自己的类或框架还是需要#import。

    /*********************分割线*************************/

    !!property 

    property != nil的一个简化语法

    property是个对象, !property是判断为空的,再加一个!就相当于判断非空了

    /*********************分割线*************************/

    static inline EZSFliterBlock _EZR_PropertyExists(NSString *keyPath){

        return ^BOOL(id item){

            id property =[item valueForKeyPath:keyPath];

            return !!property;

        };

    }

    -(BOOL)hasListener {

        return[EZS_Sequence(self.privateListenEdges)any:_EZR_PropertyExists(@"reference.to")];

    }

    这个就是高阶函数的应用,用function generate避免反复的写filter: ^BOOL(id item){ return item != nil;}或者map:^id(id item){ return item.property;}这样的代码

    /*********************分割线*************************/

    相关文章

      网友评论

          本文标题:散点知识备忘

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