首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能在Mac上使用respondsToSelector

不能在Mac上使用respondsToSelector
EN

Stack Overflow用户
提问于 2011-10-30 03:07:29
回答 2查看 15.3K关注 0票数 83

当我在ARC环境中调用respondsToSelector时,我得到以下错误消息Automatic Reference Counting Issue No known instance method for selector respondsToSelector:

这是标题

代码语言:javascript
复制
#import <AppKit/AppKit.h>


@class MTScrollView;

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


@interface MTScrollView : NSScrollView 
{

}

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

@end

这是实现文件

代码语言:javascript
复制
#import "MTScrollView.h"

@implementation MTScrollView

@synthesize delegate;


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

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

@end

关于为什么我会得到这个错误,有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-30 03:12:42

使协议符合NSObject

代码语言:javascript
复制
@protocol MTScrollViewDelegate <NSObject>

否则,编译器不会认为对象会像respondsToSelector一样响应NSObject消息,并会生成警告。无论哪种方式,它都会在运行时成功,没有任何问题。

票数 278
EN

Stack Overflow用户

发布于 2016-07-11 16:45:38

对于Swift来说,这变成了:

代码语言:javascript
复制
@objc protocol MTScrollViewDelegate: NSObjectProtocol

NSObject协议对所有Objective-C对象的基础方法进行分组。

有关NSObjectProtocol的更多信息,请访问:https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/index.html

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7941051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档