Невозможно использовать responsesToSelector с помощью ARC на Mac

Когда я вызываю respondsToSelector в среде ARC, я получаю следующее сообщение об ошибке Automatic Reference Counting Issue No known instance method for selector respondsToSelector:

Это заголовок

#import <AppKit/AppKit.h>


@class MTScrollView;

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


@interface MTScrollView : NSScrollView 
{

}

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

@end

Это файл реализации

#import "MTScrollView.h"

@implementation MTScrollView

@synthesize delegate;


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

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

@end

Любые предложения о том, почему я получаю эту ошибку?

Ответ 1

Сделайте протокол совместимым с NSObject

@protocol MTScrollViewDelegate <NSObject>

В противном случае компилятор не считает, что объект будет отвечать на сообщения NSObject, такие как respondsToSelector, и будет генерировать предупреждение. Он будет успешным во время выполнения без проблем в любом случае.