2014-01-24 1 views
0

Я задаю это как два вопроса, потому что не думаю, что могу задать одно без другого.Как определить c-структуру в Objective-C в своем собственном файле и передать структуру в качестве аргумента

В моем приложении, у меня есть много вещей, которые начинаются с «ND» означает п-мерное, и у меня есть метод, который выглядит, как это в моем NDVector классе:

angleAtIntersectionWith: (NDVector *) vec 
    inPlaneFirstAxis: (NSUInteger) a1 secondAxis: (NSUInteger) a2 

Если вы» Интересно, что этот метод должен найти угол между двумя векторами только в одной плоскости, что означает только два из их компонентов, которые индексируются a1 и a2. Так, например. vec1 angleAtIntersectionWith: vec2 inPlanFirstAxis: 0 secondAxis: 2 найдет угол между vec1 и vec2 при их индексном элементе 0 и 2 элементах индекса (компоненты X и Z).

Я хотел упростить этот метод, чтобы сделать его выглядеть следующим образом:

angleAtIntersectionWith: (NDVector *) vec inPlane: (struct NDPlane *) plane 

Где NDPlane должна быть структура, как это:

struct NDPlane{ 
    NSUInteger a1;  
    NSUInteger a2; 
}; 

И это все, что все это должно нужно. Никаких методов и ничего.

Я хочу сохранить NDPlane в своем собственном файле, так как мне это сделать? Я делаю простой файл заголовков c? Если это так, я передаю это как структуру правильно?

ответ

1

Да, просто создайте простой файл .h, который объявляет структуру. Затем импортируйте .h, где вам это нужно.

Однако вам не нужен указатель в аргументе. C structs передаются по значению, а не по ссылке. Так же, как примитивные типы.

Я также хотел бы предложить вам typedef структуру, поэтому вам не нужно использовать struct везде, где вы используете NDPlane.

+0

У меня есть [последующий вопрос] (http://stackoverflow.com/questions/21343553/how-should-i-name-a-header-file-designed-for-one-structure) – michaelsnowden

Смежные вопросы