Cuando llamo respondsToSelectoren un entorno ARC, aparece el siguiente mensaje de errorAutomatic Reference Counting Issue No known instance method for selector respondsToSelector:
Este es el encabezado
#import <AppKit/AppKit.h>
@class MTScrollView;
@protocol MTScrollViewDelegate
-(void)scrollViewDidScroll:(MTScrollView *)scrollView;
@end
@interface MTScrollView : NSScrollView
{
}
@property(nonatomic, weak) id<MTScrollViewDelegate>delegate;
@end
Este es el archivo de implementación
#import "MTScrollView.h"
@implementation MTScrollView
@synthesize delegate;
- (void)reflectScrolledClipView:(NSClipView *)aClipView
{
[super reflectScrolledClipView:aClipView];
if([delegate respondsToSelector:@selector(scrollViewDidScroll:)])
{
[delegate scrollViewDidScroll:self];
}
}
@end
¿Alguna sugerencia sobre por qué recibo este error?

respondsToSelectores un método de instancia, porNSObjectlo que el sistema necesita saber que el delegado es una subclase deNSObjectrespondsToSelector:es parte del protocolo NSObject. Ladelegatepropiedad se declara comoid <MTScrollViewDelegate>, que dice solo que el delegado responde a los mensajes declarados en ese protocolo. Por lo tanto, necesita que ese protocolo se ajuste al protocolo NSObject para que el compilador sepa que serespondsToSelector:encuentra entre ellos.delegateno se declara con un nombre de clase, por lo que la clase NSObject no es relevante aquí; el compilador no sabe, y aún no sabe, que esas dos cosas están relacionadas. El “NSObject” que forma parte de la solución es el protocolo NSObject , porque ahí es donderespondsToSelector:se declara. developer.apple.com/library/mac/documentation/Cocoa/Reference/…Para Swift esto se convierte en:
@objc protocol MTScrollViewDelegate: NSObjectProtocolPara obtener más información sobre qué es NSObjectProtocol: https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/index.html
fuente