如何检查CGSize是否已初始化(或者其值是否与"nil"不同)

rei*_*man 7 core-graphics objective-c

我在类中有一个CGSize属性,我需要检查它是否已经初始化.我知道CGSize不是一个对象,但一般来说,检查对象是否与nil不同是一样的想法.怎么做?

jer*_*e10 17

您可以将其与CGSizeZero或您认为无效的任意大小进行比较.

if (!CGSizeEqualToSize(CGSizeZero, mySize)) {
   // do something
}
Run Code Online (Sandbox Code Playgroud)


mat*_*att 8

这取决于你在"一堂课"中的意思.如果这是一个实例变量,那么您的问题就会结束,因为您可以保证实例变量将自动初始化为某种形式的零(即CGSizeZero).但是,如果你的意思是"在我的代码中",例如自动变量,那么就没有这样的测试; 完全取决于你在使用之前进行初始化,直到你这样做,价值可能是任何东西(对不起,但这就是C的工作原理).

总的来说,你的问题本身就是一种"难闻的气味".如果在代码中的某个时刻对您来说这个值是否已初始化是很重要的,那么您做错了.这是你的价值; 由你来初始化它(例如当你的整个对象被初始化时).或者,如果由于某种原因你需要知道你的setter是否曾被调用过,那么你需要在你的setter中添加一个布尔值来告诉它是否曾被调用过.