как вызвать функцию того же класса из других функций того же класса - Цель C - PullRequest
0 голосов
/ 11 мая 2011

Но я получаю ошибки при объявлении, как это.

@implementation data

-(void)SwapEndian:(uint8_t*)pData withBOOLValue:(bool)bIsAlreadyLittleEndian
{
data* datas = [data alloc];
[datas swapEndians:(uint8_t)&pData[nIndex] withSize:(sizeof(uint32_t));  
}

-(void)swapEndians:(uint8_t*)pData withnByteSize:(int const)nByteSize
{
    NSLog(@"swapEndians!!");
}

@end

Как вызвать функцию из другой функции в том же классе?

Ответы [ 3 ]

4 голосов
/ 11 мая 2011

Для этого можно использовать ключевое слово self .

[self yourFunctionName];

3 голосов
/ 11 мая 2011

Перво-наперво:

data* datas = [data alloc]; // Where is your init? Don't use un-initialized objects!
[datas swapEndians:(uint8_t)&pData[nIndex] withSize:(sizeof(uint32_t));

Второе:
Если метод, который вы пытаетесь вызвать, является вторым из вашего кода, у вас есть опечатка вселектор!Эта строка должна выглядеть следующим образом:

[datas swapEndians:&pData[nIndex] withnByteSize:sizeof(uint32_t)];

Третье:
Вы отправляете сообщения себе, используя self.

2 голосов
/ 11 мая 2011

Прежде всего имя класса должно начинаться с заглавной буквы, вот я думаю, что вы пытаетесь сделать

    @implementation Data //changed it just naming convention 

    -(void)swapEndian:(uint8_t*)pData withBOOLValue:(bool)bIsAlreadyLittleEndian
      {
         [self swapEndians:(uint8_t)&pData[nIndex] withSize:(sizeof(uint32_t));  
      }

    -(void)swapEndians:(uint8_t*)pData withnByteSize:(int const)nByteSize
      {
        NSLog(@"swapEndians!!");
      }

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