У меня возникли проблемы при добавлении серии объектов char * в очередь (CHCircularBufferQueue). Очередь принимает объект в качестве входных данных (насколько я понимаю), поэтому я создал простой объект, унаследованный от NSObject, с именем tokenObject, который просто содержит char * tokenName. Каждый раз, когда я добавляю новый объект tokenObject в очередь, я выделяю новый объект tokenObject и затем передаю этот новый объект в очередь при следующем добавлении в очередь. Однако когда я устанавливаю tokenObject.tokenName в новую строку char *, он переопределяет ВСЕ tokenObjects в очереди, поэтому при печати всей очереди я получаю серию одинаковых строк вместо уникальных строк. Что я делаю неправильно?
Это в объективе-с
Ниже приведен код из main.m & tokenObject.h
main.m:
int main (int argc, const char * argv[])
{
CHCircularBufferQueue *tokenQueue = [[CHCircularBufferQueue alloc] init];
tokenObject *myTokenObject = [[tokenObject alloc] init];
TK currentToken;
initScanner();
scanToken();
[myTokenObject setTokenName:getToken() ];
currentToken = getTkrep();
int x=0;
while (x<5/*currentToken != TK_EOF*/) {
//printf("line number: %d, token value: %d, token string: %s\n", getLinenumber(), getTkrep(), getToken()); /* replace line with "add to queue" */
scanToken();
myTokenObject.tokenName = getToken();
[tokenQueue addObject:myTokenObject];
myTokenObject = [[tokenObject alloc] init];
currentToken = getTkrep();
x = x+1;
}
while(x != 1){
printf("%s", [[tokenQueue firstObject] tokenName]);
[tokenQueue removeFirstObject];
x = x-1;
printf("%i", x);
}
return 0;
}
tokenObject.h:
@interface tokenObject : NSObject{
char *tokenName;
}
@property (assign) char* tokenName;
@ конец