结构作为Objective C中的类成员

时间:2009-11-06 11:58:55

标签: objective-c

结构作为目标C中的类成员是否可能?如果是,我如何从另一个类中为该结构赋值?

3 个答案:

答案 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

我希望这会有所帮助。