Objective-C 结构体的默认值以及如何测试

2024-03-16

我正在尝试测试属性是否已设置。我知道我拥有的对象:

CGRect ppGoalFrame;
LocalPlaySetup *localPlaySetup;

我可以测试

if (localPlaySetup == nil)

但如果我尝试用 == nil 或 == NULL 测试 CGRect

if (ppGoalFrame == nil)

I get

invalid operands to binary == (have 'CGRect' and 'void *')

也是如此CGRect“无效”,空,零......?在设置之前?显然我不能将 CGrect 与 void 指针进行比较(我不能使用ppGoalFrame == void);还有另一种方法可以测试这个吗?到目前为止,Objective-C 还很容易理解,但一旦 C 出现,我就有点迷失了。


只有指针可以为空。 CGRect 是一个结构体 - 它代表一个连续的内存块。判断是否已设置的唯一方法是检查其内容。

苹果确实提供了一个常数CGRectNull。您可以将变量设置为此并使用 CGRectIsNull 函数来确定它是否已设置。CGRectNull不等于CGRectZero因此您不必担心所需值是否为零。

请注意,CGRectNull 仅包含一个 CGRect 结构体,其中填充了 Apple 稍后可以为 CGRectIsNull 函数识别的值。它与比较指针时的空值不同。

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

Objective-C 结构体的默认值以及如何测试 的相关文章

随机推荐

  • QMenu 中 QActions 的 QTooltip

    我希望能够显示工具提示QMenu items QActions 我取得的最好成绩是连接悬停信号QAction to a QTooltip show connect action QAction hovered QToolTip showTe
  • Nodejs Express fs 将文件迭代到数组或对象失败

    因此 我尝试使用 Nodejs Express FS 模块来迭代我的应用程序中的目录 将每个文件名存储在一个数组中 我可以将其传递到我的 Express 视图并迭代列表 但我很难做到这一点 当我在 files forEach 函数循环中执行
  • Sql Server Case 语句在用户定义函数中给出错误

    我想在用户定义的函数中使用 case 语句 因为我需要匹配多个术语 我可以使用表格进行匹配 但随后我无法将其放入计算列定义中 这适用于 IF 语句 CREATE FUNCTION MaraSizeNumber ms varchar RETU
  • 将 auto_ptr<> 与数组一起使用

    我在用着auto ptr lt gt 它使用类指针类型的数组 那么如何为其赋值 e g auto ptr
  • Rails ruby​​ - 未找到 cap 命令

    我正在尝试使用 Rubber 将示例应用程序部署到 Amazon EC2 我也在关注 Rubber 的 Railscasts 剧集 到目前为止 我已经安装了 gem 运行了 vulcaznize 命令 并对rubber yml 文件进行了修
  • 如何防止tinyMCE粘贴事件?

    如果编辑器当前内容的长度加上要粘贴的单词的长度超过指定的限制 我需要阻止tinyMCE的粘贴事件 我该怎么做 谢谢 我错了 我不需要阻止或禁用tinyMCE 中的粘贴来执行此操作 我用了他们的paste插件并在粘贴之前修改了内容 funct
  • 显式 int 类型作为参数

    是否可以将函数写为 void func uint64 t val template
  • 如何使用 jQuery 设置动态文本框的只读属性?

    我正在尝试从数据库值填充文本框 并且我想将文本框值设置为只读 当用户单击 编辑 选项时 将所有文本框设置为可编辑 我没能做到这一点 这是我的 HTML 代码
  • 使用 Immutable 对普通对象进行深度访问

    考虑以下示例 const stickers new OrderedMap set 1 hero batman name Bruce stickers getIn 1 gt hero batman name Bruce stickers ge
  • REST 服务返回错误的内容类型并解组

    我正在使用 RESTEasy 更具体地说 是他们框架的客户端 我正在调用第三方 Web 服务 它会返回一些 JSON 代码 但是 出于某些充分的原因 他们响应中的内容类型是 text javascript 我如何告诉 RESTEasy 它应
  • 带撇号的单词的正则表达式 (Java)

    我正在尝试找出正则表达式来匹配仅包含字母和撇号的字符串 如果一个字符串包含撇号 我只想匹配它两边都有一个字母 到目前为止我所拥有的是 a zA Z a zA Z 我想匹配如下字符串 a a aa a a aaa But not bb bb
  • 将 Service Fabric 应用程序发布到 Azure 时操作超时

    当我尝试将 Service Fabric 应用程序发布到 Azure 群集时 收到以下错误消息 3 gt Copy ServiceFabricApplicationPackage Operation timed out 3 gt At C
  • Mongodb concat int 和 string

    我正在尝试为我的集合中大小为 50 mb 及以上的所有文件投影 FileName 和 FileSize 但我无法连接 FileSize 类型 因为它的类型为 Int 我希望投影是 result id ObjectId 5652c399a21
  • 将 Python Keras NLP 模型转换为 Tensorflowjs

    我正在尝试了解有关 Tensorflowjs 的更多信息 但遗憾的是我无法将 Keras NLP 模型转换为 Tensorflowjs 这就是我想要转换的 from keras models import load model from k
  • Jqgrid 页脚文本格式问题

    在 Jqgrid 中 我已将某些列设置为链接 对于这些列 我还设置了页脚 MAX 但问题是 配置的链接也被添加到页脚值中 这是意料之外的 任何帮助表示赞赏 提前致谢 我认为问题是how您添加页脚信息 如果你使用页脚数据 http www t
  • 无法将文件从 DBFS 复制到 Databricks 中的本地桌面

    我想将文件从 dbfs 保存或复制到我的桌面 本地 我使用此命令但收到错误 dbutils fs cp dbfs username test txt C Users username Desktop Error SyntaxError un
  • 有没有办法通过 Express + Node.js 使用多个视图引擎

    Scenario 我使用开发了一些交易页面Node js http nodejs org Express http expressjs com 车把 http handlebarsjs com 作为视图引擎和MongoDB http www
  • 更新对象属性

    我正在使用 Struts 2 我的问题是我不想更新所有对象属性 因为我得到了一些敏感数据 这是我的代码示例 public class person private name private email private password 例如
  • for 循环的简写是否缓存可迭代对象的引用?

    我可能试图变得过于高效 但我一直想知道以下两个代码示例中哪一个会执行得更快 假设您有一个对包含以下内容的对象的引用ArrayList of Strings并且您想要迭代该列表 以下哪项更有效 即使效率有限 for String s foo
  • Objective-C 结构体的默认值以及如何测试

    我正在尝试测试属性是否已设置 我知道我拥有的对象 CGRect ppGoalFrame LocalPlaySetup localPlaySetup 我可以测试 if localPlaySetup nil 但如果我尝试用 nil 或 NULL