В предыдущем посте я объяснил, что преобразовывал старую программу на C в Objective-C, и узнал разницу между статическими методами обмена сообщениями (старая версия) и методами класса.
Однако как мне теперь заставить метод класса вызывать метод экземпляра (при условии, что это вообще возможно)? Вот исходная (статическая) функция:
static int newSplitB(int b, int hi, int lo, int found)
{
int hlp;
if(hi - lo <= 1)
return 0;
bIs(lo + (hi - lo + 1) / 2); // calls function bIs();
return 1;
}
и точно такой же код, «переведенный» на Obj-C:
+(int)newSplitB :(int)b :(int)hi :(int)lo :(int)found
{
int hlp;
if((hi - lo) <= 1)
return 0;
[TablesClass bIs:(lo+(hi-lo+1)/2)]; // gives compile error
return 1;
}
Функция «bIs()» — для краткости обрезанная — находится в отдельном исходном файле в моем классе «Таблицы». К сожалению, попытка построить программу дает мне необъявленную ошибку TablesClass (первое использование в этой функции), даже несмотря на то, что класс был выделен/инициирован ранее в том же файле реализации.
Я часами искал в сети решение, но безрезультатно. Если то, что я пытаюсь сделать, невозможно, как я могу изменить последний метод, чтобы он делал то, что мне нужно? Заранее спасибо :-)
bIs
функцией C или методомTablesClass
? - person BoltClock   schedule 19.02.2011