结构作为目标C中的类成员是否可能?如果是,我如何从另一个类中为该结构赋值?
答案 0 :(得分:5)
是的,你可以。您可以将结构公开为属性(在这种情况下,您必须设置/获取整个内容),或者编写自定义访问器,这些访问器将进入结构化的字段。
对于一个具体的例子,CGRect是一个结构(虽然它被typdef隐藏),这意味着UIView的frame属性获取并设置了一个结构。
换句话说:
CGRect myFrame = CGRectMake(0,0,320,480); //CGRect is a struct
myView.frame = myFrmae; //Setting a struct
答案 1 :(得分:1)
您只需使用点表示法来分配和访问值。如果您有指向结构的指针,也可以使用->
。
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.
答案 2 :(得分:0)
是的,有一种使用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
我希望这会有所帮助。