Хранение и доступ к динамическим массивам C в качестве переменных экземпляра в Objective C - PullRequest
1 голос
/ 02 февраля 2012

Я хотел бы хранить (указатели на) динамические массивы в качестве переменных экземпляра в объектах и ​​иметь возможность инициализировать массивы в произвольный размер. Как в этом простом коде:

@interface DummyClass: NSObject {
float * X;
}
@property float * X;
@end

@implementation DummyClass
@synthesize X;
-(id) init {
    [super init];
    X = malloc(100*sizeof(float));
}
@end

int main(int argc, const char * argv) {
    float * mypointer;
    DummyClass * myclass = [[DummyClass alloc] init];
    mypointer = myclass.X;
    mypointer[0] = 1;
    NSLog(@"Vallue assigned succesfully");
    getchar();
    return 0;
}

Это дает ошибку «Ошибка сегментации» при попытке присвоить значение mypointer [0]. Как правильно хранить динамические массивы внутри объектов и обращаться к ним?

1 Ответ

0 голосов
/ 02 февраля 2012

Ваш метод init должен что-то вернуть:

-(id) init {
    self = [super init];
    X = malloc(100*sizeof(float));
    return self;
}

Ваша программа работает для меня здесь хорошо после внесения этого изменения (и после исправления подписи main).Вы должны были получить предупреждение или ошибку об этой ошибке.Как вы собрали и протестировали пример программы?

...