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

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

CGRect ppGoalFrame;
LocalPlaySetup *localPlaySetup;

我可以测试

if (localPlaySetup == nil)

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

if (ppGoalFrame == nil)

我明白了

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

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

最佳答案

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

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

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

https://stackoverflow.com/questions/2414809/

相关文章:

ios - 为什么 UICollectionView 的 UICollectionViewCell

objective-c - 如何在 "for (id item in items)" objecti

objective-c - 使用 AVAudioplayer 在后台播放音乐

objective-c - "Couldn' t 编译连接 :"error mean? 是什么意思

ios - 显示 UIAlertController 的简单 App Delegate 方法(在 S

ios - Xcode 8 中的单元测试失败

ios - 如何隐藏/显示导航栏中的右键

iphone - 改变 setContentOffset 的速度 :animated:?

objective-c - 是否可以将 NSInteger 转换为 NSNumber?

ios - UILabel : how do you set the font size?