是否有可能將結構作爲目標C中的類成員?如果是,我怎樣才能從另一個班級爲這個結構賦值?結構作爲目標C中的類成員
回答
是的,你可以。您可以將結構作爲一個屬性公開(在這種情況下,您必須設置/獲取整個事物),或者編寫自定義訪問器,這些自定義訪問器將進入結構的字段中。
對於一個具體的例子,CGRect是一個結構(雖然它被一個typdef隱藏起來),這意味着UIView的框架屬性獲取並設置一個結構。
換句話說:
CGRect myFrame = CGRectMake(0,0,320,480); //CGRect is a struct
myView.frame = myFrmae; //Setting a struct
你只需要使用點符號來分配和訪問值。如果你有一個指向結構的指針,你也可以使用->
。
typedef struct {
int a;
double b;
} SomeType;
// Define some class which uses SomeType
SomeType myVar;
myVar.a = 1;
myVar.b = 1.0;
SomeType* myPtr = &myVar;
NSLog (@"%i", myPtr->a);
// This works...
SomeType mySecondVar = myVar;
// But you have to be careful in cases where you have pointers rather than values.
// So this wouldn't work if either element was a C string or an array.
是的,並且有一個簡單的方法可以使用Objective-C 2.0屬性訪問該結構。考慮Stephens post中的以下結構。
typedef struct {
int a;
double b;
} SomeType;
在您的.h文件中,你會宣佈該成員在@interface
@interface AClass : NSObject{
SomeType member;
}
@property SomeType member;
@end
請記住,如果你選擇去使用指針在這裏,您將需要管理自己的記憶。
而在你的@implementation(你.m文件),不要忘記添加@synthesize
@implementation AClass
@synthesize member;
@end
我希望這有助於。
'assign'是合成屬性的默認行爲,運行時足夠聰明以知道不保留結構。它可以輕鬆查看它的類型編碼並查看它不是Objective-C對象。 – 2009-11-06 16:31:43
謝謝,我會進行編輯。 – Randaltor 2009-11-06 17:13:03
- 1. 目標C++成員類
- 2. 結構類成員
- 3. 作爲目標C中的數據成員的對象目標C中的數據成員
- 4. C++ char *作爲類成員
- 5. 嵌套結構作爲類中的成員
- 6. 目標中的結構-C
- 7. 目標c中的結構
- 8. 結構在C,其成員也結構
- 9. C結構 - 合法成員?
- 10. C動態成員結構
- 11. C++結構數據成員
- 12. 關於C結構成員
- 13. 調用C中的結構成員
- 14. C++分配成員的目標函數,類成員函數
- 15. 作爲結構成員內存分配的多維數組C
- 16. 從目標c中的基類訪問子類成員
- 17. 如何使一個C++結構包含其他結構作爲成員變量
- 18. C++ 11 - 在結構向量中修改結構的成員
- 19. C++通行證結構成員作爲參數
- 20. C++:處理結構成員作爲數組
- 21. C#結構與對象作爲數據成員
- 22. 作爲類構造函數中的參數的類的C++成員
- 23. C結構成員的功能
- 24. C - 傳遞結構+值的成員
- 25. C,結構的第一個成員
- 26. 查詢結構或類的成員
- 27. 將數據結構中的成員公開爲類?
- 28. C++定義類的成員結構和成員函數返回它
- 29. 訪問類私有成員內的結構成員?
- 30. 與結構的一些成員的工作影響到結構C++
你能解釋一點細節嗎? becoz我是C的新手。 – diana 2009-11-06 12:19:54