伙计们可以有人解释我是什么if(!起源)的意思请!逻辑运算符Objective-C
-(void) setOrigin: (XYPoint *) pt {
if (! origin)
origin = [[XYPoint alloc] init];
origin.x = pt.x; origin.y = pt.y;
}
伙计们可以有人解释我是什么if(!起源)的意思请!逻辑运算符Objective-C
-(void) setOrigin: (XYPoint *) pt {
if (! origin)
origin = [[XYPoint alloc] init];
origin.x = pt.x; origin.y = pt.y;
}
发布的代码看起来很有趣。从外部看,该方法似乎承诺将某个对象的origin
属性设置为传递点(pt)的值。它在内部似乎只有在原始属性尚未设置的情况下才会这样做。
关于'!'爆炸或不操作者,在最低的水平!测试非零。当应用于布尔值,像YES或NO这是真正的标量1或0,它作为一个逻辑非操作...
!YES is the same as !1 and equals NO
!NO is the same as !0 and equals YES
在问题的代码,!也被习惯施加到非标量值,一个对象的指针,但它的做同样的事情在低的水平,测试对于非零的烦躁,在这种情况下的非零:
SomeObject *someObject = nil;
!someObject is the same as !nil and the same as !0 and equals YES
如果对象已经被分配,则指针someObject具有非零值,所以
SomeObject *someObject = [SomeObject alloc];
!someObject equals NO
此成语的一个常见用途是懒吸气剂。属性最初为零,然后在第一次请求时给出非零值。
- (NSString *)someStringProperty {
if (!_someStringProperty) {
// this runs the first time, but not again because we set
// _someStringProperty to be non-nil here
_someStringProperty = @"hello world";
}
return _someStringProperty;
}
如果没有产地。 if语句中的'!
'表示如果这不是真的。
你的代码是做什么的,它是检查是否有一个起源,如果没有它会创建一个新的。之所以这么做是因为你不想创造多个原产地。
希望这会有所帮助。如果您还有其他问题,请随时提问。 :)
你看语言文档吗? – Jerry101 2015-02-08 18:22:22