Objective c 目标C…定义结构?

Objective c 目标C…定义结构?,objective-c,Objective C,我是一名新编程人员,一般来说是Objective-C。我是否在接口中声明结构并在实现中使用void方法定义它 @interface Elements : NSObject { struct elementZ{ NSString *name; float molarmass; }elements[81]; 现在我已经声明了。我在哪里初始化元素[81]数组?您的代码对我来说就是这样。然后,您可以访问实现中的数据,如下所示: typedef struct element{

我是一名新编程人员,一般来说是Objective-C。我是否在接口中声明结构并在实现中使用void方法定义它

@interface Elements : NSObject {


struct elementZ{

    NSString *name;
    float molarmass;

}elements[81];

现在我已经声明了。我在哪里初始化元素[81]数组?

您的代码对我来说就是这样。然后,您可以访问实现中的数据,如下所示:

typedef struct element{

    NSString *name;
    float molarmass;

}elementZ;

elementZ[81] array;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // Insert code here to initialize your application 
    elements[2].name = @"hello";
    NSLog(elements[2].name);
}

这将向控制台打印“hello”。

我是否在接口中声明结构并在实现中使用void方法定义它?

是的,这就是你所想的,因为目标C是C的超集。有一个方法,它不带参数,返回void,并通过
元素初始化
struct elementz
的成员变量[81]。可能通过运行从0到80的循环。例如-

#import <Foundation/NSObject.h>

@interface Fraction: NSObject {
    struct myStructure {
        int numerator, denominatior;
    }objects[10];
}

-(void) print;
-(void) initialize;
@end

@implementation Fraction

-(void) initialize
{
    for( int i=0; i<10; ++i )
    {
        objects[i].numerator = (i+1);
        objects[i].denominatior = (i+2);
    }
}
-(void) print
{
    for( int i=0; i<10; ++i )
    {
        printf("%d\t%d\n", objects[i].numerator, objects[i].denominatior);
    }
}
@end

int main(int argc, char *argv[])
{
    Fraction *obj = [[Fraction alloc] init];    
    [ obj initialize ];
    [ obj print ];

    [ obj release ];
    return 0;
}
#导入
@接口分数:NSObject{
结构myStructure{
整数分子,分母;
}对象[10];
}
-(作废)打印;
-(作废)初始化;
@结束
@实现分数
-(无效)初始化
{

对于(int i=0;i在Elements类的实现块中添加一个init方法:

- (id)init {

    if (self = [super init]) {

        for (int i=0; i<81; i++) {
            elements[i].name = "foo";
        }
    }

    return self;
}

我想你把结构和数组混淆了。我正在声明elementZ Structure的数组是的,你已经声明了。你定义它是什么意思?初始化?然后你可以添加一个
-(id)init
方法到您的实现中。@Kai-OP可能是要初始化
elementZ
成员。@VenDiaS:我已经编辑了您的问题,将define更改为initialise。
Elements *e = [[Elements alloc] init];