美文网首页傲视苍穹iOS《Objective-C》VIP专题iosiOS新手学习
可能是北半球iOS最牛的开发者---YY大神

可能是北半球iOS最牛的开发者---YY大神

作者: DoubleShawn | 来源:发表于2016-08-30 02:21 被阅读1674次

    - YYModel — 高性能的 iOS JSON 模型框架。
    - YYCache — 高性能的 iOS 缓存框架。
    - YYImage — 功能强大的 iOS 图像框架。
    - YYWebImage — 高性能的 iOS 异步图像加载框架。
    - YYText — 功能强大的 iOS 富文本框架。
    - YYKeyboardManager — iOS 键盘监听管理工具。
    - YYDispatchQueuePool — iOS 全局并发队列管理工具。
    - YYAsyncLayer — iOS 异步绘制与显示的工具。
    - YYCategories — 功能丰富的 Category 类型工具库。

    看他的源码真的服了。
    YY大神怎么能这么强,强无敌

    YY大神我的偶像

    “尽可能使用底层框架语言,亲力亲为的去做。”
    “运用双向链表,哈希表两种数据结构的LRU淘汰算法。”
    “基于Sqlite3的高性能封装。”

    他就是这么一个底层的人。

    我还沾沾自喜的感觉自己有生之年能追到唐巧老师级别,直到自己看到了YY大神的代码,我才知道什么叫望尘莫及。相差的太多了。
    如果说国内那些夸夸而谈,写两本基础的书的作者,是我辈能够高山止仰。
    那么YY大神就是超越于凡人,渡劫三清,云游在不同空间的仙人。

    YYKit系列,也是我这段时间要研究的框架,不求能甚解,只愿在研究框架之时,能学YY大神的一丝一毫就足以。

    YY大神的博客名叫ibireme
    是一名来自国内的90后的iOS开发工程师,我钦佩YY大神的原因之一,就是因为他跟我在同一个年头,同一个时期开始学习iOS的,但是这一比,我眼泪流下来,看过大神代码,我有一种从来没学过iOS的感觉。

    “我花费了大量的时间阅读和学习各种开源的代码、研究其中的实现原理、尝试自己实现相关技术、尝试在工作中使用,这使得我在 iOS 开发技术上进步很快。自学能力是很重要的。主动去研究一些优秀的开源项目、多在工作中实践和学习,这样就能逐步提升个人技术水平了。”
    ———ibireme
    我得把这句话刻在墙上。

    你们...有没有....

    你们有没有

    你们...有没有.... “目标”

    定一个小目标

    定一个小目标吧,超越YY大神

    部分YYCache笔记

    YYCache源码分析:http://www.cocoachina.com/ios/20160614/16672.html
    YYCache作者blog:http://blog.ibireme.com/2015/10/26/yycache/

    @interface YYCache : NSObject
    // 读取当前数据库名称
    @property (copy, readonly) NSString *name;
    // memoryCache内存缓存,diskCache文件缓存
    @property (strong, readonly) YYMemoryCache *memoryCache;
    @property (strong, readonly) YYDiskCache *diskCache;
    // 可通过下面三种方法来实例化YYCache对象
    - (nullable instancetype)initWithName:(NSString *)name;
    - (nullable instancetype)initWithPath:(NSString *)path NS_DESIGNATED_INITIALIZER;
    + (nullable instancetype)cacheWithPath:(NSString *)path;
    // 禁止通过下面两个方式实例化对象
    - (instancetype)init UNAVAILABLE_ATTRIBUTE;
    + (instancetype)new __attribute__((unavailable("new方法不可用,请用initWithName:")));
    // 通过key判断是否缓存了某个东西,第二个法是异步执行,异步回调
    - (BOOL)containsObjectForKey:(NSString *)key;
    - (void)containsObjectForKey:(NSString *)key withBlock:(nullable void(^)(NSString *key, BOOL contains))block;
    // 读--通过key读取缓存,第二个法是异步执行,异步回调
    - (nullable id)objectForKey:(NSString *)key;
    - (void)objectForKey:(NSString *)key withBlock:(nullable void(^)(NSString *key, id object))block;
    // 增、改--缓存对象(可缓存遵从NSCoding协议的对象),第二个法是异步执行,异步回调
    - (void)setObject:(nullable id)object forKey:(NSString *)key;
    - (void)setObject:(nullable id)object forKey:(NSString *)key withBlock:(nullable void(^)(void))block;
    // 删--删除缓存
    - (void)removeObjectForKey:(NSString *)key;
    - (void)removeObjectForKey:(NSString *)key withBlock:(nullable void(^)(NSString *key))block;
    - (void)removeAllObjects;
    - (void)removeAllObjectsWithBlock:(void(^)(void))block;
    - (void)removeAllObjectsWithProgressBlock:(nullable void(^)(int removedCount, int totalCount))progress
                                     endBlock:(nullable void(^)(BOOL error))end;
    @end
    
     .m代码中
    
    //能在源码中看到,YYCache缓存了两份,一份在内存上,一份在文件上。
    - (void)setObject:(id<NSCoding>)object forKey:(NSString *)key {
        [_memoryCache setObject:object forKey:key];
        [_diskCache setObject:object forKey:key];
    }
    - (void)setObject:(id<NSCoding>)object forKey:(NSString *)key withBlock:(void (^)(void))block {
        [_memoryCache setObject:object forKey:key];
        [_diskCache setObject:object forKey:key withBlock:block];
    }
    
    - (void)removeObjectForKey:(NSString *)key {
        [_memoryCache removeObjectForKey:key];
        [_diskCache removeObjectForKey:key];
    }
    
    - (void)removeObjectForKey:(NSString *)key withBlock:(void (^)(NSString *key))block {
        [_memoryCache removeObjectForKey:key];
        [_diskCache removeObjectForKey:key withBlock:block];
    }
    
    - (void)removeAllObjects {
        [_memoryCache removeAllObjects];
        [_diskCache removeAllObjects];
    }
    

    相关文章

      网友评论

      本文标题:可能是北半球iOS最牛的开发者---YY大神

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