Аргумент NSBundle в вызове метода - PullRequest
0 голосов
/ 02 марта 2011

Я должен вызвать этот метод:

[super initWithPNGFileName: "/Volumes/SAGITTER/Lavoro/Progetti xCode/IVBricker test/ball.png" andGame:game andCGRect:CGRectMake(x,y,16,16)];

Так что, когда я ставлю это на iPhone, путь не правильный. Я знаю, что должен использовать NSBundle, но если я сделаю

[super initWithPNGFileName:[[NSBundle mainBundle] pathForResource:@"ball" ofType:@"png" inDirectory:@"/"] andGame:game andCGRect:CGRectMake(x,y,16,16)];

Я получаю предупреждение: «Передача аргумента 1 из 'initWithPNGFileName: andGame: andCGRect:' из несовместимого типа указателя"

Как мне продолжить использовать NSBundle?

Ответы [ 2 ]

0 голосов
/ 02 марта 2011

, если [super initWithPNGFileName: "/Volum... - это 100% правильный код. Я думаю, что это сообщение ожидает строку в стиле C.
Но [[NSBundle mainBundle] pathForResource:...] вернет объект NSString.

Попробуйте передать [[[NSBundle mainBundle] pathForResource:@"ball" ofType:@"png" inDirectory:@"/"] cStringUsingEncoding:NSUTF8StringEncoding] методу.

0 голосов
/ 02 марта 2011

Ваш первый вызов передает c-строку методу initWithPNGFileName:, а -pathForResource: возвращает NSString.Получите c-строку из пути, который вы получили из bundle, и передайте эту строку вашему методу:

[super initWithPNGFileName:[[[NSBundle mainBundle] pathForResource:@"ball" ofType:@"png" inDirectory:@"/"] UTF8String]
                   andGame:game 
                 andCGRect:CGRectMake(x,y,16,16)];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...