Проблемы с реализацией протокола - PullRequest
1 голос
/ 30 декабря 2011

Я занимаюсь разработкой игры, и у меня есть представление настроек, которое выдвигается модально. Я хочу, чтобы, если я отключил музыку в этом представлении, остановил фоновую музыку. Я использую протокол (я использую автоматический подсчет ссылок):

game.h

#import <UIKit/UIKit.h>
#import "AVFoundation/AVFoundation.h"
#import "stackButton.h"
#import "tvr_AppDelegate.h"

@protocol settingsChanger <NSObject>

-(void)changeSettings:(int)soundVal musicSetting:(int)musicVal;

@end
 @interface game : UIViewController <UIAlertViewDelegate, settingsChanger>{
     ...
 }

game.m

   -(void)changeSettings:(int)soundVal musicSetting:(int)musicVal{
    if (musicVal == 1) {
        [self playMusic];
    }else{
        [audioPlayer stop];
    }

settings.h

#import <UIKit/UIKit.h>

@protocol settingsChanger;

@interface settings : UIViewController{
    id<settingsChanger> settingsDelegate;
}

@property (nonatomic, strong) id<settingsChanger> settingsDelegate;

-(IBAction)updateMusicSetting;

@end

settings.m

-(IBAction)updateMusicSetting{
    tvr_AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
    if (swMusic.on) { 
        [delegate updateMusicSetting:1];
        [settingsDelegate changeSettings:0 musicSetting:1];
    }
    else { 
        [delegate updateMusicSetting:0];
        [settingsDelegate changeSettings:0 musicSetting:0];
    }
}

Мой IBAction запускается переключателем UIS. Все идет хорошо, за исключением того, что id settingsDelegate ссылается на память 0x0, и я думаю, что мой метод changeSettings никогда не вызывается в game.h. Чего мне не хватает?

1 Ответ

1 голос
/ 31 декабря 2011

Я бы предложил в качестве хорошей практики программирования назвать ваши классы заглавными буквами, то есть: «Игра» вместо «игра», а также ваши протоколы: «SettingsChanger» вместо «settingsChanger». Ваши соглашения о наименовании методов также нуждаются в некотором улучшении, просто потратьте 30 минут и прочитайте ссылку Apple «Руководство по какао для какао» на «Руководство по какао для какао»

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