在目標-c中,問號和冒號(?:三元運算符)意味著什么?這一行代碼是什么意思?label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;這個?和:把我弄糊涂了。
3 回答

莫回無
TA貢獻1865條經(jīng)驗 獲得超7個贊
這是C三元算子(目標-C是C的超集):
label.frame?=?(inPseudoEditMode)???kLabelIndentedRect?:?kLabelRect;
在語義上等同于
if(inPseudoEditMode)?{ ?label.frame?=?kLabelIndentedRect;}?else?{ ?label.frame?=?kLabelRect;}
沒有第一元素的三元。variable ?: anotherVariable
)指的是(valOrVar != 0) ? valOrVar : anotherValOrVar

慕容3067478
TA貢獻1773條經(jīng)驗 獲得超3個贊
condition ? valueIfTrue : valueIfFalse

慕絲7291255
TA貢獻1859條經(jīng)驗 獲得超6個贊
三元運算符的重要之處在于,它可以在if-Other不能使用的地方使用。IE:在條件或方法參數(shù)內(nèi)。
[NSString?stringWithFormat:?@"Status:?%@",?(statusBool???@"Approved"?:?@"Rejected")]
.這是預處理常量的一個很好的用途:
//?in?your?pch?file...#define?statusString?(statusBool???@"Approved"?:?@"Rejected") //?in?your?m?file...[NSString?stringWithFormat:?@"Status:?%@",?statusString]
這使您不必使用和釋放局部變量的if-Other模式。
- 3 回答
- 0 關注
- 765 瀏覽
添加回答
舉報
0/150
提交
取消