美文网首页
NSCache内存缓存

NSCache内存缓存

作者: EricLihuifeng | 来源:发表于2019-03-24 11:02 被阅读0次

NSCache 基本使用

NSCache缓存类介绍

NSCache类基本使用.png

NSCache源码

/*      NSCache.h
        Copyright (c) 2008-2018, Apple Inc. All rights reserved.
*/

#import <Foundation/NSObject.h>

@class NSString;
@protocol NSCacheDelegate;

NS_ASSUME_NONNULL_BEGIN

NS_CLASS_AVAILABLE(10_6, 4_0)
@interface NSCache <KeyType, ObjectType> : NSObject {
@private
    id _delegate;
    void *_private[5];
    void *_reserved;
}

@property (copy) NSString *name;

@property (nullable, assign) id<NSCacheDelegate> delegate;

- (nullable ObjectType)objectForKey:(KeyType)key;
- (void)setObject:(ObjectType)obj forKey:(KeyType)key; // 0 cost

/**
//在缓存中设置指定键名对应的值,并且指定该键值对的成本,用于计算记录在缓存中的所有对象的总成本,出现内存警告或者超出缓存总成本上限的时候,缓存会开启一个回收过程,删除部分元素
*/
- (void)setObject:(ObjectType)obj forKey:(KeyType)key cost:(NSUInteger)g;
- (void)removeObjectForKey:(KeyType)key;

- (void)removeAllObjects;

//设置最大的缓存成本(量)  (单个成本*总个数)  这个成本是一个单位概念
        //SD框架中图片的成本计算方式是这样的 image.size.height * image.size.width * image.scale * image.scale SD框架中图片的成本计算
@property NSUInteger totalCostLimit;    // limits are imprecise/not strict
//设置最大缓存数据的数量,如果超出该限制那么内部会自动开启一个回收过程把最先存储的数据删除
@property NSUInteger countLimit;    // limits are imprecise/not strict
@property BOOL evictsObjectsWithDiscardedContent;

@end

@protocol NSCacheDelegate <NSObject>
@optional
- (void)cache:(NSCache *)cache willEvictObject:(id)obj;
@end

NS_ASSUME_NONNULL_END

相关文章

  • refer to Cache

    缓存 plist(主要是系统设置) Cache缓存 (保存在磁盘、内存中)NSCache 1.NSCache 简单...

  • 📚Effective OC - Tip 47, 48, 49,

    50. 构建缓存的时候选用 NSCache 而非 NSDictionary NSCache 与系统低内存挂钩。 N...

  • NSCache内存缓存

    NSCache 基本使用 NSCache缓存类介绍 NSCache源码

  • iOS开发之NSCache

    NSCache的特点 NSCache是苹果推出专门用来处理内存缓存的类;NSCache默认是线程安全的,在使用的时...

  • 容易被人忽略的NSCache

    第一次见到NSCache,是在SDWebImage中。SDWebImage的内存缓存机制就是通过NSCache实现...

  • iOS复习中有关SDWebImage可能知识点总结(2)

    1. SDWebImage怎么实现缓存的? 分为内存缓存(利用SDImageCache类的NSCache属性),磁...

  • iOS 内存缓存和磁盘缓存

    一、缓存方式分为两种: 常见的内存缓存框架有NSCache、TMMemoryCache、PINMemoryCach...

  • iOS NSCache 内存缓存

    NSCache 是内存缓存,可以暂时储存到内存,当程序退出时储存的内容就会消失

  • SDWebImage源码剖析(二)

    SDWebImageCache管理着SDWebImage的缓存,其中内存缓存采用NSCache,同时会创建一个io...

  • NsCache

    NsCache。是苹果官方提供的缓存。NsCache 在系统内存很低的时候,会自动释放对象(但模拟器不会释放),...

网友评论

      本文标题:NSCache内存缓存

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