散点知识备忘

#import 与 @import 区别

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

#ifdef __OBJC__

    #import

#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;}这样的代码

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

你可能感兴趣的:(散点知识备忘)