從您的示例代碼struct
聲明如下:
typedef struct CGPointSPUserResizableViewAnchorPointPair {
CGPoint point;
SPUserResizableViewAnchorPoint anchorPoint;
} CGPointSPUserResizableViewAnchorPointPair;
以下是您引用的代碼行,將其重新格式化以便於閱讀:
CGPointSPUserResizableViewAnchorPointPair upperRight = {
CGPointMake(self.bounds.size.width, 0.0),
SPUserResizableViewUpperRightAnchorPoint
};
由於此行創建變量,因此可以使用複合初始值設定項對其進行初始化。複合初始值設定項是一個大括號包含列表,其中包含每個struct
成員的初始值,順序爲。所以CGPointMake
調用的返回值初始化爲upperRight.point
,而SPUserResizableViewUpperRightAnchorPoint
變量初始化爲upperRight.anchorPoint
。
在您重寫的代碼中對lowerMiddle
的賦值不會創建變量,您不能使用複合初始值設定項。您需要以不同的方式設置結構成員。一種方法是分配給每個成員依次爲:
CGPointSPUserResizableViewAnchorPointPair lowerMiddle;
if (self.isScaled)
{
lowerMiddle.point = CGPointMake(self.bounds.size.width/2, self.bounds.size.height);
lowerMiddle.anchorPoint = SPUserResizableViewLowerMiddleAnchorPoint;
}
的另一種方式是使用一個化合物字面。字面的化合物就像在一個變量定義的化合物初始化,除了你必須「劇組」它爲正確的類型:
CGPointSPUserResizableViewAnchorPointPair lowerMiddle;
if (self.isScaled)
{
lowerMiddle = (CGPointSPUserResizableViewAnchorPointPair){
CGPointMake(self.bounds.size.width/2, self.bounds.size.height),
SPUserResizableViewLowerMiddleAnchorPoint
};
}
腳註1.還有其他形式的複合初始化,但這是最簡單的,並且是你的例子使用的形式。
什麼樣的代碼?什麼錯誤?你預期的結果是什麼? –
可能出現[重新指派結構在C](http://stackoverflow.com/questions/10298070/reassign-struct-in-c) – tia
-1說「出現錯誤」,並沒有引用確切的錯誤。 –