当前位置:   article > 正文

Objective-C 中的SEL

Objective-C 中的SEL

Objective-C 中,SEL(Selector)是一种用来表示方法的类型。

它实际上是一个指向方法的指针,用于在运行时动态调用方法。

下面是一个使用 SEL 的代码示例:
 

  1. #import <Foundation/Foundation.h>
  2. @interface MyClass : NSObject
  3. - (void)method1;
  4. - (void)method2;
  5. @end
  6. @implementation MyClass
  7. - (void)method1 {
  8.     NSLog(@"This is method1");
  9. }
  10. - (void)method2 {
  11.     NSLog(@"This is method2");
  12. }
  13. @end
  14. int main() {
  15.     SEL selector1 = @selector(method1);
  16.     SEL selector2 = @selector(method2);
  17.     
  18.     MyClass *myObject = [[MyClass alloc] init];
  19.     
  20.     // 通过 SEL 调用方法
  21.     if ([myObject respondsToSelector:selector1]) {
  22.         IMP imp = [myObject methodForSelector:selector1];
  23.         void (*func)(id, SEL) = (void *)imp;
  24.         func(myObject, selector1);
  25.     }
  26.     
  27.     if ([myObject respondsToSelector:selector2]) {
  28.         IMP imp = [myObject methodForSelector:selector2];
  29.         void (*func)(id, SEL) = (void *)imp;
  30.         func(myObject, selector2);
  31.     }
  32.     
  33.     return 0;
  34. }
  1. 上述代码定义了一个名为 `MyClass` 的类,其中包含了两个方法 `method1` 和 `method2`
  2. 在 `main` 中使用 `SEL` 类型变量 `selector1` 和 `selector2` 分别指向 `method1`和 `method2` 方法
  3. 然后,我们创建了一个 `MyClass` 对象 `myObject`。
  4. 通过调用 `[myObject respondsToSelector:]` 方法可以判断该对象是否实现了对应的方法。
  5. 如果实现了,我们可以使用 `[myObject methodForSelector:]` 方法获取方法的实现 `IMP`,然后将其转换为函数指针,并调用该函数。

最终的输出结果将会是:

  1. This is method1
  2. This is method2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/102131
推荐阅读
相关标签
  

闽ICP备14008679号