Método no llamado

Tengo un método bastante simple en una clase en un archivo separado, que toma un número entero, lo busca en una selección de mayúsculas y minúsculas y devuelve un puntero NSURL que le corresponde. Tiene este método:

#import <Foundation/Foundation.h>

@interface ChangeCurrentScene : NSObject
{
    NSString *filePath;
    NSURL *url;
    int currentScene;
}

- (NSURL *)changeSceneURL:(int)toDesiredScene;

@end

No estoy 100% seguro de cómo se supone que debo llamarlo desde afuera, pero tengo un botón conectado en mi guión gráfico, que definitivamente funciona, y estoy usando esta línea para llamarlo:

 nextURL = [sceneChanger changeSceneURL:1];

De este archivo de encabezado:

@interface MSViewController : UIViewController <AVAudioPlayerDelegate> {

    BOOL userInputAvailable;
    int currentScene;
    NSURL *nextURL;
    ChangeCurrentScene *sceneChanger;

}

@property (strong) AVAudioPlayer *menuPlayer;
@property (strong, nonatomic) IBOutlet UILabel *userChoiceLabel;
@property (strong, nonatomic) IBOutlet UIImageView *nowPlayingIcon;


- (BOOL) playScene : (NSURL *)fileToBePlayed;

@end

He puesto un punto de interrupción en la primera línea de la clase changeSceneURL:toDesiredScene, pero no se llama en absoluto. Sin caídas, pero tampoco llamadas. En primer lugar, ¿es esta la forma correcta de utilizar el retorno de un método llamado? nextURL es un objeto NSURL y quiero que el valor devuelto se almacene en él. En segundo lugar, ¿qué razón habría para que el método no se llamara en absoluto? Estoy realmente perplejo aquí, pero estoy seguro de que es algo deslumbrantemente simple.

¡Gracias por adelantado!

preguntado el 22 de febrero de 12 a las 14:02

¿Puede mostrar el archivo de encabezado para el objeto con el nombre sceneChanger? Ese objeto debería estar donde se encuentra el método changeSceneURL:. Pero podría estar sucediendo algo más, así que agregue el archivo de encabezado completo a su pregunta original. -

Ponga un punto de ruptura en el nextURL= línea, y verifique el valor de sceneChanger. Probablemente sea nulo. -

1 Respuestas

checa eso sceneChanger no está nil. Puedes enviar mensajes a nil, pero el método no se llama.

Editar Deberías inicializar sceneChanger en algún lugar como este:

sceneChanger = [[ChangeCurrentScene alloc] init];

Respondido 22 Feb 12, 18:02

Sí, es nulo. Probé en gdb con "po sceneChanger". ¿Cómo le asigno un valor? ¿Necesito asignarle un NSURL o un int? Es un método, no sabía que un método tuviera un valor. - Luke

@lukech - No, sceneChanger es un objeto, es una instancia de ChangeCurrentScene. - sch

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.