夥計們可以有人解釋我是什麼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