如果a爲零,是否會調用doSomeCalculations?客觀c分配中的懶惰評估?
a.position = [self doSomeCalculations];
我想它作爲doSomeCalculations可以改變狀態,但我不知道。
如果a爲零,是否會調用doSomeCalculations?客觀c分配中的懶惰評估?
a.position = [self doSomeCalculations];
我想它作爲doSomeCalculations可以改變狀態,但我不知道。
如果position
是一個屬性,你重寫聲明等效括號語法,你結束了:
[a setPosition:[self doSomeCalculations]];
沒有懶惰的評價在這裏進行。這不是任何不同當你考慮到所有這些括號表達式轉化爲函數的嵌套調用調用objc_msgSend()
:
objc_msgSend(a, sel_getUid("setPosition:"), objc_msgSend(self, sel_getUid("doSomeCalculations")));
底線是,[self doSomeCalulations]
被評爲即使a
是nil
。
是的。您正在分配什麼[self doSomeCalculations]
將返回到a.position
,無論它是否爲零。
此外,它可能取決於您是否已經爲位置編寫了自己的訪問器,但是如果您使用了d訪問器,它將被分配。