如何使用 NSCache

2023-12-01

有人可以举例说明如何使用NSCache缓存字符串? 或者有人有一个很好的解释的链接吗?我好像找不到啊..


您使用它的方式与使用它的方式相同NSMutableDictionary。不同的是,当NSCache检测到内存压力过大(即缓存了太多值),它将释放其中一些值以腾出空间。

如果您可以在运行时重新创建这些值(通过从互联网下载,通过进行计算等),那么NSCache可能适合您的需求。如果数据无法重新创建(例如,它是用户输入、时间敏感等),那么您不应将其存储在NSCache因为它将在那里被摧毁。

不考虑线程安全的示例:

// Your cache should have a lifetime beyond the method or handful of methods
// that use it. For example, you could make it a field of your application
// delegate, or of your view controller, or something like that. Up to you.
NSCache *myCache = ...;
NSAssert(myCache != nil, @"cache object is missing");

// Try to get the existing object out of the cache, if it's there.
Widget *myWidget = [myCache objectForKey: @"Important Widget"];
if (!myWidget) {
    // It's not in the cache yet, or has been removed. We have to
    // create it. Presumably, creation is an expensive operation,
    // which is why we cache the results. If creation is cheap, we
    // probably don't need to bother caching it. That's a design
    // decision you'll have to make yourself.
    myWidget = [[[Widget alloc] initExpensively] autorelease];

    // Put it in the cache. It will stay there as long as the OS
    // has room for it. It may be removed at any time, however,
    // at which point we'll have to create it again on next use.
    [myCache setObject: myWidget forKey: @"Important Widget"];
}

// myWidget should exist now either way. Use it here.
if (myWidget) {
    [myWidget runOrWhatever];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 NSCache 的相关文章

  • SwiftUI:动态“列表”中的“切换”在重用时会破坏其布局?

    我试图展现一种动态List行包含Toggle元素 这Toggle最初布局正确 但是当它们滚动进和滚出视图时 即单元格重用时 它们的布局会中断 最小示例代码 import SwiftUI struct SwitchList View var
  • 更改导航项(栏)的背景颜色

    有没有一种简单的方法可以更改视图顶部导航项的背景颜色 我有一个基于导航的应用程序 我只希望一个视图获得另一种背景颜色 我主要使用 IB 创建视图 我找到了以下解决方案 未测试 float r 10 float g 55 float b 13
  • HTML 分页

    有没有html分页的开源项目 我正在为 iPhone 开发一个应用程序 我想在 UIWebView 上显示 HTML 文件 并且不希望用户向下滚动以查看屏幕上未显示的剩余内容 我想在第二个 UIWebView 上显示剩余的内容 我怎样才能做
  • 如何右对齐 UILabel?

    Remark 实施 myLabel textAlignment right does not解决了我的问题 这不是我所要求的 我想要实现的是让标签对齐右对齐 为了更清楚地说明 这就是如何left对齐外观 就是这样justify对齐外观 if
  • 如何为 NSAttributedString 内的文本设置“隐藏”属性?

    我有一个 Cocoa 应用程序NSTextView控件将其文本保存在NSAttributedString 实际上我相信这是一个NSMutableAttributedString 我可以轻松地在该字符串内的不同字符范围上设置和修改不同的文本属
  • 添加/删除带有动画的 UITableViewCell?

    我知道这听起来像是一个愚蠢的问题 但我到处都看过 我怎样才能做到这一点 我知道如何使用 swype to delete 方法来执行此操作 但是我如何在该函数之外执行此操作 请发布一些代码示例 Thanks Coulton self tabl
  • 使用 AVFoundation 裁剪 AVAsset 视频

    我在用AVCaptureMovieFileOutput录制一些视频 我使用显示预览层AVLayerVideoGravityResizeAspectFill稍微放大 我遇到的问题是最终的视频较大 包含预览期间不适合屏幕的额外图像 这是预览和生
  • 对成员“buildBlock()”的引用不明确

    我一直在尝试使用 Swift UI 为 iOS 13 制作一个应用程序 但我不断收到这个奇怪的错误 对成员 buildBlock 的引用不明确 无论我做什么 错误都不会消失 我尝试一次对代码段进行注释 以查看哪一部分可能导致了问题 但唯一有
  • 以弯曲格式显示文本

    我正在寻找以曲线格式绘制一些文本 我使用哪个控件并不重要 UITextField UILabel or UITextView 我只想显示如图所示的文本 仍在寻找解决方案 请帮忙 查看此链接 https nodeload github com
  • Objective-C:int值无故改变

    Objective C 我需要帮助保留 int 的值 无需我的命令 它就在我身上发生变化 最初的问题是 如何声明和保留 int 这在另一篇文章中得到了满足 Objective C 如何声明和保留 int https stackoverflo
  • 如何从 AFNetworking 和 AFJSONRequestOperation 获取可变字典?

    我将 JSONKit 与 AFNetworking 的 AFHTTPClient 带有 AFJSONRequestOperation 一起使用 我似乎无法弄清楚如何触发使用 JSONKit 的 mutableObjectFrom 方法 而不
  • ios 在后台处理推送通知

    我想保存应用程序处于后台状态时到达的推送通知 我知道关于 void application UIApplication application didReceiveRemoteNotification NSDictionary userIn
  • 从什么时候起 Xcode 不再需要前向方法声明,为什么?

    我注意到 Xcode 或更准确地说是 Apple LLVM 编译器 不再需要前向方法声明 换句话说 构建以下代码时不会发出警告 implementation Foo void foo self bar void bar end 这曾经发出警
  • 在 Xcode4 中使用 Boost

    有人设置 C Xcode4 项目来使用 Boost 吗 对于一个简单的 C 控制台应用程序 我需要在 Xcode 中设置哪些设置 Thanks 用这个来管理它 和这个
  • 在视图之间传递核心数据实体变量

    我无法理解如何在视图之间使用核心数据实体变量 为了更好地理解我的问题是什么 我的代码如下 View A 基本上 您必须将完整预算实体或相关预算实体的 ID 从视图 A 传递到视图 B 由于不知道您的应用程序的视图层次结构和逻辑 我假设您选择
  • XCode 4.5 给我“SenTestingKit/SenTestKit.h”文件未找到,但适用于 4.4.1

    我刚刚安装了 XCode 4 5 它在我现有的项目之一上给了我一个 SenTestingKit SenTestingKit h 文件未找到错误 此错误仅发生在 XCode 4 5 中 但它在 4 4 1 上编译正常 我已经检查过SenTes
  • 从 cocoa 编辑系统偏好设置

    有没有办法使用可可以编程方式编辑系统首选项 是否需要一些框架 我需要这样做来更改全局代理设置 另外 我的应用程序是沙盒的 有关于如何执行此操作的示例代码吗 感谢您的帮助 您正在寻找系统配置框架 但这并不容易 我认为沙盒应用程序不可能这样做
  • ios - Gamekit 的 GKOctree 未找到元素

    我正在尝试使用GKOctree https developer apple com documentation gameplaykit gkoctree用于高效检索 3D 空间中的对象 然而 以下代码似乎没有按预期工作 import Gam
  • 在 HTML5 iOS 7 / iOS 8 中显示十进制键盘

    经过几个小时的搜索后 我只是有一个简单的问题 是否有可能在网络浏览器输入字段中显示小数键盘 input type number 只显示数字 但我需要在左下角使用逗号或点 我尝试过任何事情 pattern step等等 但没有显示十进制键盘
  • iOS 电池监控 Swift

    我已将监控设置为启用 但模拟器和设备中的电池电量仍然为 1 UIDevice currentDevice batteryMonitoringEnabled true var level UIDevice currentDevice batt

随机推荐

  • Facebook 搜索 API - 根据位置列出所有用户?

    不确定这是否可行 但有没有办法使用 Graph API 或其他方式列出将给定位置指定为其 当前城市 的所有用户 即使该应用程序已获得授权 也不可能 以下是您可以搜索的字段 标有 http developers facebook com do
  • Swift 中的错误:属性“self.circle1”未在 super.init 调用时初始化?

    我是编程新手 正在尝试在 Swift 中编写一个 tic tac toe 应用程序 并且此错误阻止我运行该应用程序 属性 self circle1 未在 super init 调用中初始化 该应用程序尚未完成 但我看不出现有代码中的错误在哪
  • 方法:people.get() 不返回姓名

    我有一个关于 API 的问题 GET https people googleapis com v1 资源名称 人 当 的时候资源名称 人员 account id并且 personFields 是 names API 仅当帐户ID有一个与之关
  • 对象属性的双重赋值会导致未定义的属性[重复]

    这个问题在这里已经有答案了 谁能告诉我输出是如何变成的undefined var foo n 2 foo x foo n 2 console log foo x undefined foo x foo n 2 The foo x指的是财产x
  • 从 ruby​​ on Rails 生成受密码保护的 zip 文件

    有没有人有幸在 Rails 中创建受密码保护的 zip 文件 我花了很多时间试图让 Chilkat 的 64 位 Linux gem 在 OSX 上运行 我将它列为已安装在我的 gem 列表中 但我始终无法实例化任何东西 我使用的是 1 9
  • C# .NET 4.6.1 实体框架 - 尽管未调用 DB.SaveChanges(),DB.MyTable.Add(...) 仍很慢

    A 这个版本是slow 持续时间以分钟为单位计算 DB 是 SQL Serve 数据库的典型 EF 数据上下文 AA Words 100是一个简单的 SQL Server 表 已添加到 EF 设计器 DB AA Words 100 Add被
  • FireStore fromSnapshot 与 fromMap 读取 DocumentSnapshot 的区别?

    我一直想知道使用哪个来读取 FireStore 快照 因为我可以使用 fromSnapshot 作为snapshot fieldName 工作得很好 现在 我在 Google Codelabs 中找到了一个示例https codelabs
  • y_test、sklearn 多标签分类上的 MultiLabelBinarizer 形状不一致错误

    import numpy as np import pandas as pd from sklearn pipeline import Pipeline from sklearn feature extraction text import
  • null == foo 与 foo == null [重复]

    这个问题在这里已经有答案了 这可能只是一个风格问题 但我正在读一本 Java 编码书 Android 编程 作者都在变量方法之前先声明 null 这是我不熟悉的做法 例如 if null foo code here or if null f
  • 改革语法以删除移位,减少 if-then-else 中的冲突

    如何消除给定语法的 bison 的移位归约冲突 selection stmt gt if expression statement if expression statement else statement 提供修改后的语法的解决方案将受
  • 使用SetTimer API时出现“运行时错误50290”如何处理?

    我在尝试在 Excel 中制作秒表计时器时遇到了此错误 这是一个简单的测试代码 使用按钮创建一个空的 Excel 工作簿 并为其分配一个宏 Sub Button1 Click TimerID SetTimer 0 0 0 5 1000 Ad
  • onHover 事件未在 Chart.js 中触发

    我想当鼠标在图表上移动时更改光标 例如这把小提琴 这适用于 Chart jsv2 4但不适用于v2 6 v2 7任何想法 var ctx document getElementById canvas1 getContext 2d var m
  • 脚本可以在本地主机上运行,​​但不能在服务器上运行

    我遇到这个问题 代码在本地主机上运行 但当我将其上传到服务器时却不起作用 我想实现这个 宝丽莱照片吧画廊 这是我的网站的链接 十二生肖 2013 Note 您需要进入图库选项卡才能查看它 EDIT 请使用 Google Chrome 浏览器
  • 寻找正则表达式来匹配 gmail plus 地址

    我目前使用这个 gmail com 我正在捕获一组加号之前和之后的文本 它适用于大多数情况 例如 email protected 但如果我尝试匹配说就会跌倒 email protected 重复的 号似乎把它搞砸了 任何帮助将非常感激 Th
  • 将 R Parallel 与其他 R 包一起使用

    我正在使用 R 中的 LQMM 包进行非常耗时的分析 我将模型设置为从星期四开始运行 现在是星期一 并且仍在运行 我对模型本身充满信心 作为标准 MLM 进行测试 并且对我的 LQMM 代码充满信心 已经使用相同的数据集运行了其他几个非常相
  • 检测用户存在

    我想做的是检测用户是否正在积极使用运行 Windows 2000 或更高版本 的计算机 最好 我想在不使用屏幕保护程序的情况下执行此操作 背景 我们有一个客户服务部门 位于寻线组中 可以 可用 或 不可用 如果他们 有空 呼叫将被路由到他们
  • 多个命令在 xcode 11.4 反应本机中产生错误我的副本包资源为空

    以下是xcode中的错误 我还尝试过从工作区设置构建旧版本 但未能成功 多个命令生成 Users saifubaid Library Developer Xcode DerivedData antispam bjwrxskogxnnophf
  • 如何在Linux内核中递归读取目录内容?

    我想实现一个树遍历函数 打印给定目录的所有内容 在内核中 我知道如何在用户空间中执行此操作 但我的要求是在内核空间中执行此操作 为此 我正在研究 vfs readdir 函数 并且对其用法有点困惑 假设我将从其他内核模块调用我的遍历函数 这
  • 如何设置 AlertDialog 的主题

    如何将警报主题设置为标准 Android 主题之一 我想使用 Holo Dark 因为弹出窗口默认为 Holo Light 我的代码 AlertDialog Builder confirm new AlertDialog Builder t
  • 如何使用 NSCache

    有人可以举例说明如何使用NSCache缓存字符串 或者有人有一个很好的解释的链接吗 我好像找不到啊 您使用它的方式与使用它的方式相同NSMutableDictionary 不同的是 当NSCache检测到内存压力过大 即缓存了太多值 它将释