iOS中respondsToSelector方法的作用

本文介绍如何在Objective-C中使用respondsToSelector方法来检查对象是否实现了特定的方法,并演示了如何安全地调用这些方法,避免运行时错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Test.h

#import <Foundation/Foundation.h>

@interface Test : NSObject

-(void) test:(NSString*) msg;

-(void) notImp;//没有在Test.m中实现

@end


Test.m

#import "Test.h"

@implementation Test

-(void) test:(NSString*) msg

{

    NSLog(@"%@", msg);

}

@end


main.m

#import <UIKit/UIKit.h>

#import "AppDelegate.h"

#import "Test.h"


int main(int argc, char * argv[]) {

    @autoreleasepool {

        //return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

        id testObj = [[Test alloc] init];//注意,这里使用id

        

        SEL testSelector = @selector(test:);

        SEL notImpSelector = @selector(notImp:);

        

        if([testObj respondsToSelector:testSelector])

        {

            [testObj test:@"tester.m中实现了test方法"];

        }

        if([testObj respondsToSelector:notImpSelector])

        {

            //test.m中没有实现notImp

            [testObj notImp];

        }

        

        return 0;

    }

    

}


notImp方法没有在.m文件中实现,所以[testObj respondsToSelector:notImpSelector]返回no;

respondsToSelector的作用:判断某个方法实现,那么就去调用,防止出现异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值