是否有可能将结构作为目标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