iOS: невозможно получить доступ к методам экземпляра внутри класса C - PullRequest
1 голос
/ 18 октября 2011

Не думаю, что я достаточно хорошо понял C.

В мои коды добавлен метод обратного вызова.

А внутри метода я хочу иметь возможность вызывать метод, которыйсущества к экземпляру.Я попытался [self methodName], но мне сказали, что "self - это необъявленный идентификатор".

Добавлены фрагменты кода :

@implementation TheClass


static void audioRouteChangeListenerCallback (
                                       void                      *inUserData,
                                       AudioSessionPropertyID    inPropertyID,
                                       UInt32                    inPropertyValueSize,
                                       const void                *inPropertyValue) 
{

    .
    .
     //trying to call a instance method of TheClass here.
}

Ответы [ 2 ]

4 голосов
/ 18 октября 2011

Вы не можете использовать self в простой функции C, она не принадлежит ни одному экземпляру Objective-C (в этом разница между функцией и методом).

Для обратных вызовов, которые должнывзаимодействуя с Objective-C, вы обычно передаете указатель на ваш объект при настройке обратного вызова.В этом случае inUserData - это, вероятно, то, что вы можете установить самостоятельно при регистрации обратного вызова.

0 голосов
/ 18 октября 2011

В вашем вопросе вы используете синтаксис не C, а target-C. Вы пытаетесь использовать цель-C? Если это так, self - это ключевое слово, а не идентификатор. Компилятор ясно думает, что ваш код - C, а не Objective-C. Ваш исходный файл имеет расширение .m?

...