Цель C ... Определить структуры? - PullRequest
0 голосов
/ 06 марта 2011

Я новое программирование и Objective-C в целом.Должен ли я объявить структуру в интерфейсе и определить ее в реализации, используя метод void? ...

@interface Elements : NSObject {


struct elementZ{

    NSString *name;
    float molarmass;

}elements[81];

Теперь, когда я объявил это ... где я могу инициализировать массив elements [81]?

Ответы [ 4 ]

1 голос
/ 06 марта 2011

Ваш код работает как у меня. Затем вы можете получить доступ к данным в вашей реализации следующим образом:

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

Это выведет «hello» на консоль.

1 голос
/ 06 марта 2011

Я объявляю структуру в интерфейсе и определяю ее в реализации, используя метод void?

Да, это то, что вы думаете, поскольку Objective C - это супернабор C. Имеется метод, который не принимает аргументов и возвращает void и инициализирует переменные-члены от struct elementz до elements[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;
}

Выход:

[Переход к процессу 949]
Запуск ...
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11

Отладчик остановлен. Программа вышла со значением состояния: 0.

Надеюсь, это поможет!

0 голосов
/ 06 марта 2011

Добавьте метод init в блок реализации вашего класса Elements:

- (id)init {

    if (self = [super init]) {

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

    return self;
}

возможно, для знакомства с Objective-C требуется некоторое чтение: Введение в язык программирования Objective-C

Создание объекта в Objective-C требует двух шагов:

  • Распределение
  • инициализация

например:.

Elements *e = [[Elements alloc] init];
0 голосов
/ 06 марта 2011
typedef struct element{

    NSString *name;
    float molarmass;

}elementZ;

elementZ[81] array;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...