Запрос на член 'pData' со значением BOOL TRUE не является структурой или объединением. Цель C - PullRequest
1 голос
/ 11 мая 2011

Я не мог использовать pData [4096] для передачи его другой функции из main.

data.m
------
@implementation data
static int msgID;
static char pData[4096]="\0";

+ (void)initialize
{
 //some initialisations
msgID =123;
}

-(void)SwapEndian:(uint8_t*)pData withBOOLValue:(BOOL)bIsAlreadyLittleEndian
{
  NSLog("%s %s",pData,bIsAlreadyLittleEndian);
}
@end

main.m
-------

[dat SwapEndian:dat.pData withBOOLValue:TRUE];

Я получаю необъявленную pData.Поскольку pData объявлен как статический внутри реализации Data

, я попытался с помощью dat.pData передать его из main.But, когда я делаю это, я получаю

Запрос на член 'pData' с BOOLзначение TRUE не является структурой или объединением.

1 Ответ

1 голос
/ 11 мая 2011

Трудно определить, что должен делать код, но вот как создать объект Objective-C, который содержит целочисленный идентификатор и массив из 4096 символов. Обратите внимание, что подобные вещи обычно не приветствуются. Если у вас нет действительно конкретной причины использования int и char[], идентификатор должен быть NSInteger, а данные должны быть NSData или NSString объектом.

Я также использовал некоторые «стандартные» соглашения об именах. Если вы пишете код Какао, это помогает выпить лот Kool-Aid.

Message.h :

@interface Message : NSObject
{
    int identifier;
    char data[4096];
}
@property (nonatomic, assign) int indentifier;
@property (nonatomic, readonly) char * data;
- (void)swapEndian:(BOOL)flag;
@end

Message.m :

@implementation Message

@synthesize identifier;
@synthesize data;

- (id)init
{
    if ((self = [super init]) == nil) { return nil; }
    identifier = 0;
    data[0] = '\0';
    return self;
}

- (void)swapEndian:(BOOL)flag
{
    NSLog(@"%s %d", data, flag);
}

@end

main.m :

#import "Message.h"

...

Message * message = [[[Message alloc] init] autorelease];
message.identifier = 123;
[message swapEndian:YES];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...