Как мы можем изменить значение структуры, которое было передано в методе? - PullRequest
0 голосов
/ 16 декабря 2009

Я хочу передать структуру внутри метода, чтобы я мог изменить его значение внутри, но я не слишком уверен в его синтаксисе:

 struct qsTracker {
          int points;
          BOOL flagged;
 } myCurrentQs;

[self calculateScore:myCurentQs];

-(void) calculateScore:(struct qsTracker) currentQs  {
    currentQs.points++;
    currentQS.flagged = YES;
}

Очевидно, что currentQs не видит никаких изменений. любая помощь будет высоко ценится.

1 Ответ

5 голосов
/ 16 декабря 2009

Вы должны передать указатель на структуру вместо самой структуры:

-(void) calculateScore:(struct qsTracker *) currentQs  {
    currentQs->points++;
    currentQS->flagged = YES;
}

А потом:

[self calculateScore:&myCurentQs];

Поскольку currentQs теперь является указателем, изменения, сделанные внутри метода, будут отражены вне метода.

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