Как вызвать метод для файла .mm из целевого класса c - PullRequest
1 голос
/ 26 февраля 2012

Я работаю над приложением для iphone.Мне нужно вызвать метод для файла .mm.Вот упрощенная версия проблемы:

ViewHelper.h

- (void)testMtd;

ViewHelper.mm (обратите внимание, что это .mm)

- (void)testMtd{
   NSLog(@"Call reached mm");
}

SomeViewController.m (импорт для ViewHelper.h для ясности опущен)

- (void)someCallerMtd{
   NSLog(@"before");
   [viewHelper testMtd]; //call does not work
   NSLog(@"after");
}

Я вижу «до» и «после» в журнале, ноВызов достигнут мм "никогда не печатается.Существуют ли специальные правила для вызова методов obj c в файле .mm?Что мне здесь не хватает?

Ответы [ 2 ]

2 голосов
/ 26 февраля 2012

Во-первых, это не имеет ничего общего с файлом .mm, это все еще target-c clss. Во-вторых, Ваша ошибка не в распределении ViewHelper.

Решением является или выделение вашего ViewHelper или публичное (void)testMtd. зависит от того, что вам нужно.

либо поменяйте SomeViewController.m:

- (void)someCallerMtd{
   NSLog(@"before");
   viewHelper = [[ViewHelper alloc] init];
   [viewHelper testMtd]; 
   [viewHelper release];
   NSLog(@"after");
}

или измените ViewHelper:

//ViewHelper.h
+ (void)testMtd;

//ViewHelper.mm
+ (void)testMtd{
   NSLog(@"Call reached mm");
}

- (void)someCallerMtd{
       NSLog(@"before");
       [ViewHelper testMtd]; //remember to use ViewHelper class. not viewhelper.
       NSLog(@"after");
    }
0 голосов
/ 26 февраля 2012

Наиболее вероятные причины того, что ваш метод -testMtd никогда не вызывается, в том, что viewHelper равен нулю. Убедитесь, что он указывает на действительный экземпляр класса ViewHelper. В Objective-C разрешено отправлять сообщение с нулевым указателем, но в этом случае метод вызываться не будет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...