2011-04-16 47 views
0

爲什麼這是一個糟糕的任務?objective-c框架

abstractionView.frame.origin.y = emptyFrameView.frame.origin.y;

編譯器會抱怨...需要作爲分配的左操作數左值

+0

來自Stack Overflow的常見問題解答:'當您決定哪個答案對您最有幫助時,請點擊答案左側的複選框大綱以將其標記爲已接受的答案。這讓其他人知道你已經收到了你的問題的一個很好的答案。這樣做很有幫助,因爲它向其他人表明您從社區中獲得價值。 (如果你不這樣做,人們會經常禮貌地要求你回去接受更多你的問題的答案!)' – 2011-04-16 05:18:10

+0

可能重複[左值賦值爲左操作數所需的值](http://stackoverflow.com/questions/5527878 /左值作爲左操作數賦值) – Caleb 2011-04-16 06:19:18

回答

0

這是從來沒有完全清楚,我爲什麼直接分配到CGRect結構的成員不相對於更高級別的關注工作(除對需要知道什麼時候被用於任何CGRect成員值的變化來定位渲染元素),但要解決這個問題的方法是做類似如下:

CGRect original = abstractionView.frame; 
abstractionView.frame = CGRectMake(original.origin.x, emptyFrameView.frame.origin.y, original.size.width, original.size.height); 

這是一種痛苦的, 我知道。也許其他人可以提供一個更好的解釋,爲什麼這是必要的首先。

+0

嘗試將點符號轉換爲相應的getters和setters(如果適用)。 – 2011-04-16 05:15:26

+0

@Bavarious - 雖然不能與CGRect一起工作,因爲它是一個'struct',並且沒有/不能有任何存取方法。 – aroth 2011-04-16 05:31:13

+1

我的觀點正好。 'a.frame.origin.y = n'相當於'[a frame] .origin.y = n',它的左邊不是左值,因此直接賦值給CGRect結構的成員不會在這種情況下工作。它試圖給方法的'CGRect'結構_returned_的成員賦值。 – 2011-04-16 05:37:00