Конфликтующий тип параметра в реализации NSInteger против NSInteger*

В реализации есть "конфликтующий тип параметра...", как вы можете видеть на рисунке ниже. Этот код работает хорошо, но предупреждение не исчезнет. Может кто-нибудь объяснить, что здесь происходит

Противоречивый тип параметра в реализации.... NSInteger (он же long) против NSInteger * (он же long

В файле.h

@property (nonatomic) NSInteger score;
@property (nonatomic) NSInteger topScore;

В файле.m

-(void)setScore:(NSInteger *)score
{
    _score = score;
    scoreLabel.text = [[NSNumber numberWithInteger:(long)self.score] stringValue];

}

-(void)setTopScore:(NSInteger *)topScore
{
    _topScore = topScore;
    topScoreLabel.text = [[NSNumber numberWithInteger:(long)self.topScore] stringValue];

}

1 ответ

Решение

Это потому что NSInteger это примитивный тип, а не объект. Он должен быть передан по значению, а не по указателю, т.е. без звездочки:

-(void)setScore:(NSInteger)score {
    _score = score;
    scoreLabel.text = [[NSNumber numberWithInteger:(long)self.score] stringValue];
}

То же самое касается setTopScore: метод.

Другие вопросы по тегам