当我在ARC环境中调用respondsToSelector时,我得到以下错误消息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关于为什么我会得到这个错误,有什么建议吗?
发布于 2011-10-30 03:12:42
使协议符合NSObject
@protocol MTScrollViewDelegate <NSObject>否则,编译器不会认为对象会像respondsToSelector一样响应NSObject消息,并会生成警告。无论哪种方式,它都会在运行时成功,没有任何问题。
发布于 2016-07-11 16:45:38
对于Swift来说,这变成了:
@objc protocol MTScrollViewDelegate: NSObjectProtocolNSObject协议对所有Objective-C对象的基础方法进行分组。
有关NSObjectProtocol的更多信息,请访问:https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/index.html
https://stackoverflow.com/questions/7941051
复制相似问题