83 votes

Impossible d'utiliser respondsToSelector à l'aide d'ARC sur Mac

Lorsque j'appelle respondsToSelector dans un environnement ARC, le message d'erreur suivant s'affiche: Automatic Reference Counting Issue No known instance method for selector respondsToSelector:

C'est l'en-tête

 #import <AppKit/AppKit.h>


@class MTScrollView;

@protocol MTScrollViewDelegate
-(void)scrollViewDidScroll:(MTScrollView *)scrollView;
@end


@interface MTScrollView : NSScrollView 
{

}

@property(nonatomic, weak) id<MTScrollViewDelegate>delegate;

@end
 

Ceci est le fichier d'implémentation

 #import "MTScrollView.h"

@implementation MTScrollView

@synthesize delegate;


- (void)reflectScrolledClipView:(NSClipView *)aClipView
{
    [super reflectScrolledClipView:aClipView];

    if([delegate respondsToSelector:@selector(scrollViewDidScroll:)])
    {
        [delegate scrollViewDidScroll:self];
    }
}

@end
 

Des suggestions sur pourquoi je reçois cette erreur?

274voto

Jason Harwig Points 9925

Rendre le protocole conforme à NSObject

 @protocol MTScrollViewDelegate <NSObject>
 

Sinon, le compilateur ne pense pas que l'objet répondra aux messages NSObject tels que respondsToSelector et générera un avertissement. Il réussira au moment de l'exécution sans problème de toute façon.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X