Dav*_*vid 83 macos objective-c automatic-ref-counting
当我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
Run Code Online (Sandbox Code Playgroud)
这是实现文件
#import "MTScrollView.h"
@implementation MTScrollView
@synthesize delegate;
- (void)reflectScrolledClipView:(NSClipView *)aClipView
{
[super reflectScrolledClipView:aClipView];
if([delegate respondsToSelector:@selector(scrollViewDidScroll:)])
{
[delegate scrollViewDidScroll:self];
}
}
@end
Run Code Online (Sandbox Code Playgroud)
有关我为什么会收到此错误的任何建议?
Jas*_*wig 274
使协议符合NSObject
@protocol MTScrollViewDelegate <NSObject>
Run Code Online (Sandbox Code Playgroud)
否则编译器不会认为该对象会响应NSObject消息respondsToSelector,并会生成警告.它会在运行时成功,没有任何问题.
小智 5
对于 Swift,这变成了:
@objc protocol MTScrollViewDelegate: NSObjectProtocol
Run Code Online (Sandbox Code Playgroud)
NSObject 协议对所有 Objective-C 对象的基础方法进行分组。
有关 NSObjectProtocol 是什么的更多信息:https : //developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/index.html
| 归档时间: |
|
| 查看次数: |
14539 次 |
| 最近记录: |