Компиляция в XCode 3.1.3 с использованием GCC 4, под Leopard 10.5.8, с 10.5 в качестве моей цели ...
У меня есть интерфейс, таким образом:
@interface testThing : NSObject { classContaininghooHa *ttv; }
@end
Иреализация, таким образом:
@implementation: testThing
- (void) instanceMethodMine
{
[ttv hooHa]; // works perfectly, compiles, links, hooHa is invoked.
}
// void cFunctionMine()
// {
// [ttv hooHa]; // compiler: 'ttv' undeclared (first use in this function) "
// }
void stupidCFunctionMine((testThing *)whom) // whom is passed class 'self' when invoked
{
[whom instanceMethodMine]; // compiles, links, works. :/
}
@end
Итак, мое понимание - явно ошибочное - заключалось в том, что если вы объявили переменную, идентификатор класса или иным образом, она была бы закрытой для класса, но внутри классавыполняется в основном как глобальный, хранящийся в выделенном экземпляре класса на время его существования.
Вот как это действует для методов objc.
Но в вышеприведенной функции c, также записанной вкласс, переменная кажется невидимой.Это не имеет смысла для меня, но это так.
Может кто-нибудь объяснить мне, что происходит?
Пока вы занимаетесь этим, как я могу объявить это какпеременная экземпляра, поэтому я могу использовать метод в функции ac, объявленной в области видимости класса, как показано выше, а также в методах?
Понимание того, что высоко ценится.