objective-C中如何判断一个类中有没有定义某个方法
时间:2022-04-23
本文章向大家介绍objective-C中如何判断一个类中有没有定义某个方法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
C#中可以通过反射分析元数据来解决这个问题,示例代码如下:
using System;
using System.Reflection;
namespace Hello
{
class Program
{
static void Main(string[] args)
{
if (IsMethodDefined(typeof(Utils), "HelloWorld"))
{
Console.WriteLine("Utils类中有方法HelloWorld");
}
else
{
Console.WriteLine("Utils类中没有方法HelloWorld");
}
Console.ReadKey();
}
/// <summary>
/// 判断一个类中有无"指定名称"的方法
/// </summary>
/// <param name="type"></param>
/// <param name="methodName"></param>
/// <returns></returns>
static bool IsMethodDefined(Type type,string methodName)
{
bool result = false;
foreach (MemberInfo m in type.GetMembers())
{
if (m.Name == methodName)
{
result = true;
break;
}
}
return result;
}
}
public static class Utils
{
public static void HelloWorld()
{
Console.WriteLine("Hello World!");
}
}
}
在obj-C中,则是通过选择器selector来判断的
Sampe.h
#import <Foundation/Foundation.h>
@interface Sample : NSObject {
}
-(void) print:(NSString*) msg;
@end
Sample.m
#import "Sample.h"
@implementation Sample
-(void) print:(NSString*) msg
{
NSLog(@"%@",msg);
}
@end
main函数:
#import <Foundation/Foundation.h>
#import "Sample.h"
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
Sample *s = [Sample new];
if ([s respondsToSelector:@selector(print:)]) //这一行就是判断实例s中有没有方法print
{
[s print:@"Hello World"];
}
else
{
NSLog(@"%@",@"Sample类中没有定义方法print");
}
[s release];
[pool drain];
return 0;
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 你一定不知道的 Linux 使用技巧
- 当 Python 爬虫搭配起 Bilibili 唧唧,奇怪的生产力出现了
- 一个简单的小技巧,监控网页所有动态标签创建的调用处
- SAP Spartacus storefrontapp index.html的design time和runtime
- OS开发爱好者福利来了:树莓派上编译C语言,顺便掌握一波硬件知识
- 一个简单易用的图标字体库和CSS框架fontawesome
- OLAP 数据平台 Druid 第一步,编写 Spec 配置
- 搭建 Kubernetes 集群 Dashboard 2.0+ 可视化插件
- Kubernetes 集群基本概念
- 未能幸免!安全容器也存在逃逸风险
- vue中v-for图片src路径错误
- 读书笔记 dotnet 什么时候进行垃圾回收
- Windows系统下ROS1或ROS2获取RTSP视频等功能包
- 本地存储
- 移动端click 延时解决方案