如果静态变量在前一行被初始化为 nil,为什么要检查它是否为 nil?

2024-01-07

下面是来自的代码示例Apple 的 iOS 核心数据教程 http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/iPhoneCoreData01/Articles/04_Adding.html#//apple_ref/doc/uid/TP40008305-CH106-SW2我觉得条件语句检查对象是否为零很奇怪。如果条件之前的行将对象设置为 nil,那么该对象是否总是评估为 nil?

// A date formatter for the time stamp
static NSDateFormatter *dateFormatter = nil;
if (dateFormatter == nil) {
    dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle];
}

因为static。该变量未设置为nil每当执行通过该语句时,它仅在程序启动时设置。

这是静态存储持续时间变量的一个功能。它们在启动时设置为其初始值,并在之后保留您设置的任何值。例如,以下代码:

void plugh(void) {
    static int xyzzy = 0;
    printf (" %d", xyzzy); // or Obj-C equivalent.
    xyzzy++;
}

如果你调用它一百次,将不会输出一长串零。它将输出:

0 1 2 3 4 ...

在 Apple 代码的情况下,这意味着日期格式化程序将根据需要创建,并且(除非您将其设置为back to nil其他地方)仅一次。如果对象创建不是一件简单的事情,这有时对性能很重要,但即使不是,连续重新创建可以简单重复使用的东西也是没有意义的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果静态变量在前一行被初始化为 nil,为什么要检查它是否为 nil? 的相关文章

  • PFQueryTableViewController 错误

    我正在遵循在线教程 使用 Parse 作为后端创建照片共享应用程序 我已经运行了两次教程 两次都从头开始创建应用程序 但在同一位置仍然出现相同的错误 我到处寻找解决方案 但仍然没有运气 我正在使用 PFQueryTableViewContr
  • Swift 中的 import 语句是否有相关成本?

    阅读字符串宣言 我看到一个段落 https github com apple swift blob master docs StringManifesto md batteries included关于避免Foundation不需要的时候导
  • 当 isUserInteractionEnabled false 时,SKSpriteNode 不会让触摸通过

    我正在尝试在 SpriteKit 中创建一个覆盖层 方法是使用SKSpriteNode 但是 我希望触摸穿过覆盖层 所以我设置isUserInteractionEnabled为假 然而 当我这样做时 SKSpriteNode似乎仍然吸收所有
  • Mac OS X 上的 .dll 等效项 [重复]

    这个问题在这里已经有答案了 我来自一个Windows背景 我习惯于通过创建 dll 然后分发所有库和文档 因此 如果用户想要使用它 他会添加对库的引用并使用它 但是 在 Mac 中 我正在开发 SDK 并且我想要一种方法creating a
  • 从 robovm 项目创建 iOS 静态库(JNI 中的 BAD_ACCESS)

    我有大量的Java代码 只有计算函数 没有UI 我想在iOS中将其重用为静态库 我的方法是使用robovm http www robovm com并按照robovm论坛中两篇文章中描述的非官方方式创建静态库 1 基本方式 https gro
  • 无法在 ios 应用程序中通过 googlecast 正确投射视频

    我正在开发一个基于 AVPlayer 的自定义视频播放器项目 尝试整合谷歌演员 我已经根据谷歌图进行了集成 https codelabs developers google com codelabs cast videos ios http
  • 错误消息:您输入的捆绑包 ID 已被使用

    我正在尝试发布一个 iPhone 应用程序 这不是第一个 我过去已经发表过其他的 因此 我在第一个和第二个表单中输入了所需的信息 然后填写了第三个大表单 您还可以在其中上传图标和屏幕截图 好吧 我在上传屏幕截图之前按下了 保存 按钮 因为我
  • 如何使用 alamofire 通过基本身份验证上传图像?

    我正在尝试使用 alamofire 4 7 1 和此代码上传图像 但说实话 我怀疑我没有编写正确的代码来上传图像 func uploadDefect defectRemark String defectLocation String def
  • BigQuery 未显示链接的 Firebase Analytics 事件日志的任何数据集

    我将我的帐户链接到 Big Query 但 Firebase Analytics 事件不会自动加载到 BigQuery 中 显示 未找到数据集 警告 我的工作进度附在下面 请查收 I have getting firebase Analyt
  • Xamarin - 错误:dsymutil 退出,代码为 72

    最近升级到 VS for Mac 8 10 21 在构建应用程序时 我得到 Xamarin Shared targets 3 3 Error dsymutil exited with code 72 这是 Xcode 13 3 的情况 完整
  • 为什么选择选择器选项后我的 SwiftUI 页面标题会发生变化?

    struct SettingsView View let settings Setting Setting name Aperture Increments options 1 3 1 2 1 Setting name Shutter Sp
  • MapKit更新标注图像

    我在寻找更新自定义的方法时遇到问题MKAnnotationView异步请求完成后的图像 其中包含有关注释状态的信息 到目前为止 我有这个 MKAnnotationView mapView MKMapView mapView viewForA
  • 使用数组中的字符串淡入/淡出标签

    func setOverlayTitle self overlayLogo text Welcome var hello String Bon Jour GUTEN nMORGEN BONJOUR HOLA BUENOS D AS BUON
  • iOS 7 tabBar 横线,如何去掉?

    Apple 在 iOS 7 中的 tabBar 上添加了一条细线 该线应该在 tabBar 和 UI 之间起到阴影或淡入淡出的作用 由于我使用的是定制的 tabBar 这条线非常令人恼火 你如何删除它 请告诉我这是可能的 否则我需要重新设计
  • AVAudioPlayer 无法从网站播放 m4a 或 mp3 文件类型

    我试图在我的应用程序中找到一个仅纯 m4a 声音的 URL 我有音频的 URL 理论上可以下载它 然后 使用下载的文件URL到声音 我尝试使用AVAudioPlayer播放它 但它不播放任何声音 这是我的代码 在 URL 检索函数中 我调用
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • iOS7 由 Interface Builder 生成的 NSIBPrototypingLayoutConstraint 自动布局约束问题

    以前在 iOS6 中 我的聊天消息视图控制器使用 IB 中精心构建的自动布局约束正确显示和动画 下面是 Xcode 5 中删除了约束的当前视图层次结构 升级到 XCode 5 和 iOS7 后 我发现我需要清除所有旧的约束才能解决默认的半透
  • Xcode 异步单元测试在主线程上等待

    我正在尝试使用 Xcode 中的单元测试来测试一些异步代码 但主线程被阻塞 问题在于 某些正在测试的代码期望从 iOS 类 AVFoundation 接收回调 但是 AVFoundation 类似乎只会在主线程上回调 问题是 如果我正在进行
  • ios8 键盘高度有所不同

    我使用下面的代码来获取键盘高度 该高度在带有 ios8 的 iPhone 5s 设备中与带有 ios7 的 IPhone4s 设备中有所不同 因此 当我在带有 ios8 的 iPhone5s 中点击它时 我的文本字段移动得非常高 而相同的代
  • 致命错误:在 Swift 中解包可选值时意外发现 nil

    所以我试图获取 Swift 中输入字段的文本 这就是我得到的 class ViewController UIViewController IBOutlet var passwordField UITextField IBOutlet var

随机推荐

  • 将材质图标与样式组件一起使用

    刚刚开始使用样式组件 有没有办法设置第三方图标 例如 Material Design Icon 的样式 这是我到目前为止的代码 但显然它不起作用 相关代码位于内容组件下方 Thanks const MaterialIcon props gt
  • localStorage html5 功能在 Samsung Android 设备上的 WebView 中不起作用

    我有一个用 WebView 包装的 html5 应用程序 为了在页面之间存储和检索用户输入值 我使用本地存储html5 功能 它在我的 Nexus 4 Android 4 4 4 上运行良好 但在 Samsung Galaxy Tab 2
  • 罗马尼亚语区域设置

    经过谷歌搜索一段时间后 我发现 Android 2 3 版本确实支持它 但我没有找到它支持的最低版本 如果 Android 2 2 版本不支持罗马尼亚语那么有什么替代方案 感谢您的关注 这是已解决的类似问题 Android 支持的语言 区域
  • 使用正则表达式检查文本框不允许小数

    我想创建一个 TextChanged 事件来检查输入文本是否符合特定条件 如果不符合则删除最后输入的字符 在本例中 标准是数字 1 位小数和 1 位分数 我正在测试仅用于数字和小数的正则表达式 并遇到了问题 我尝试了几种不同的表达式 我不擅
  • 如何在 Laravel 代码中嵌入视频

    我正在开发一个项目 在该项目中 我将 youtube 视频链接存储在数据库中 然后检索这些链接并使用刀片模板引擎尝试将它们嵌入到页面中 我使用循环将视频放入页面中 由于某种原因 我在浏览器中看不到任何视频 它覆盖了提到的空间 但不渲染任何东
  • QSqlQuery size() 总是返回-1

    QSqlQuery query QString queryText SELECT FROM section query exec queryText qDebug lt lt query size always 1 while query
  • ViewPager Fragments 未在 onCreate 中启动

    我似乎在更新 ViewPager 中使用的片段时遇到问题 无论我尝试使用 onCreate onCreateView 还是 onResume 以下是我在 MainFragment 中设置 ViewPager 的方法 public View
  • 绘制多条徒手折线或曲线图 - 添加撤消功能

    我正在尝试创建一个具有撤消和重做功能的简单绘图应用程序 我假设您可以将要绘制的内容添加到列表中 并调用该列表来绘制所有内容 然后撤消应该只是删除最后添加的项目并再次重新绘制所有内容 问题是 如何将绘制的内容添加到列表中并使用该列表撤消 我正
  • 修改awk中的文本文件

    我有一个文本文件 如以下小示例 chr1 HAVANA transcript 12010 13670 gene id ENSG00000223972 4 transcript id ENST00000450305 2 gene type p
  • 创建一个ant文件来运行其他ant文件

    I saw this https stackoverflow com questions 2108862 ant for other ants相关问题 但我的情况不同 所以再次询问 基本上 我有 12 个 ant 文件 我必须按特定顺序运行
  • 如何捕获 OSX 所有正在运行的进程的列表并将它们保存为 Xcode / Cocoa 中的文件?

    我想要捕获 OSX 所有正在运行的进程的列表 并将它们保存为 Xcode Cocoa 中的文件 我用谷歌搜索了这个 我发现的是 我的工作区正在运行的应用程序 我不知道该怎么做 请帮忙 谢谢你 正如中所解释的QA1123 http devel
  • 关闭动画、模态、Angular-UI

    是否可以关闭 Angular UI 中模态指令的动画 http angular ui github io bootstrap http angular ui github io bootstrap 选项里找不到啊我应该修改源吗 或者当您想要
  • Ada 中类型/包别名的单独声明

    我想声明一些 用户定义的编译器常量 以使我的规范文件尽可能保持 常量 这在 C 中很常见 例如 misc config hh namespace misc typedef std shared ptr a A ptr namespace a
  • 使用window.open()下载文件,如何不去掉URL中的#?

    因此 当单击某个元素时 我使用 JavaScript 下载文件 如下所示 HTML p Click Here p JavaScript function download window open file pdf 在单击该元素之前 URL
  • requirejs - 多次调用 require 的性能

    我想知道在具有多个模块的项目中使用 RequireJS 的正确方法是什么 关于具有较少依赖项的多个 require 调用与具有所有依赖项的单个 require 的性能 让我们以一个应用程序为例 我需要加载一些模块 gmaps jquery
  • 为什么 Visual Studio 2010 在编辑大型 .js 文件时速度会变慢?

    我的 js 文件目前超过 4400 行 编辑它非常慢 从按键到字符出现在文档中大约有一秒钟的延迟 是否存在与编辑大文件或 JavaScript 文件相关的特定性能问题 注意 我正在使用 VS2010 SP1 并使用 16GB RAM 运行它
  • pandas:索引数据帧时的多个条件 - 意外行为

    我正在按两列中的值过滤数据框中的行 由于某种原因 OR 运算符的行为就像我期望的 AND 运算符的行为一样 反之亦然 我的测试代码 df pd DataFrame a range 5 b range 5 let s insert some
  • jQuery 自动完成问题 - 如果用户没有专门选择,则不匹配

    继我之前的两个问题之后 如何让 jQuery 自动完成在用户点击提交时执行 search https stackoverflow com questions 3310387 如何修剪 JQuery 自动完成框的输入 https stacko
  • javascript 验证/阻止提交表单 amazon Mechanical Turk

    我正在使用亚马逊调查表单模板来创建调查 不过我想使用验证 I saw 这个问题 https stackoverflow com questions 4091059 required fields in mechanical turk但是我不
  • 如果静态变量在前一行被初始化为 nil,为什么要检查它是否为 nil?

    下面是来自的代码示例Apple 的 iOS 核心数据教程 http developer apple com library ios documentation DataManagement Conceptual iPhoneCoreData