2012-07-17 18 views
1

在CCNode(cocos版本1.0.1)中,我在各種設置器中看到以下行。CCNode:幫助解釋目標C,在化合物iVar分配

isTransformDirty_ = isInverseDirty_ = YES; 

我的IDE抱怨我們是「在條件中使用'='的事實。我將此設置爲將兩個iVar設置爲YES。我的解釋是否正確(並且因此我的忠實的IDE充當了戲劇女王)?

回答

1

是的,你的解釋是正確的,這是一個YES這兩個變量的分配。您可以嘗試用括號沉默它(這可能會或可能無法正常工作)

isTransformDirty_ = (isInverseDirty_ = YES); 

或添加#pragma忽略的問題(這是非常編譯器/ IDE相關)。

+0

謝謝,我會發佈一個錯誤報告到適當的'權威' – YvesLeBorg 2012-07-17 21:06:20

+0

@YvesLeBorg它可能不是一個錯誤,而是一個功能。當你建立一個檢查代碼來檢查潛在的編碼問題(而不是確定的編碼問題,比如語法錯誤)時,你可以權衡發現錯誤的概率,從而避免誤報的可能性。在這種情況下,IDE製造商發出警告的可能性很低。 – dasblinkenlight 2012-07-17 21:10:00

+0

當然,你不是在暗示我'不是gefingerpoken'!我謹記在心,關於任何報警統計性質的好處。雖然,IDE製造商通常對其他語言/環境中的「誤報」非常好。謝謝。 – YvesLeBorg 2012-07-17 21:15:55

0

爲什麼不只是: isTransformDirty_ = YES;isInverseDirty_ = YES;

+0

我不知道,我沒有寫這段代碼,也不確定這種形式是否「嵌入」某種優化。 – YvesLeBorg 2012-07-17 21:11:15

+2

@Jeeter除了將兩個iVar都設置爲YES之外,它的某種編碼風格也表明它們將被設置爲相同的值。將它分成兩行可以消除額外的信息,並且如果需要將它們設置爲NO,則將來需要更改兩次代碼。然而在這種情況下,這種編程風格似乎並不是必須的,因爲iVars似乎並不相關。如果iVars是相關的(比如說最初需要匹配的兩個盒子的高度),那麼這種風格更有意義。 – 2012-07-17 21:33:11

+0

@PeterM:可維護性方面。 – YvesLeBorg 2012-07-17 22:01:34