📄
Henry
  • Henry的神秘小屋
  • 其他
    • 字节码与机器码的区别?
  • ObjectiveC
    • NSInvocation
    • 检测OC项目中未使用的方法
    • Method Selector
    • 消息转发
  • Swift
    • 检测Swift项目中未使用的类 方法 属性
    • NSCoding
    • Mirror
    • JSONEncode JSONDecode
    • Any AnyObject AnyClass
    • is as? as! as
  • Cocoapods
    • 看懂Podfile.lock文件
    • 在编写的Pod中使用宏预编译
  • iOS
    • 苹果应用 保持画面流畅
    • 关于计算机展示图像的一些问题
    • @testable
    • iOS中URLRequest的缓存策略
    • CodePush接入流程
    • H5在WKWebView中读取沙盒文件
    • FDLog App客户端日志系统
    • 如何实现JSBridge基于WKWebView
    • 网络请求各个指标的度量
    • iOS13 UIModalPresentationStyle
    • 实现H5离线包机制
    • NSURLProtocol 拦截器
    • Framework
    • Lock
    • CFNetwork NSURLSession NSURLConnection
    • setNeedsLayout layoutIfNeeded layoutSubviews
    • StackView
    • Flutter Method Channel:从Dart到Native调用链
    • JSONSerialization.ReadingOptions
    • JSONSerialization.WritingOptions
    • RunLoop高级2
    • RunLoop高级1
    • RunLoop中级
    • RunLoop初级
    • LineBreak AutoShrink
    • 如何给H5出WebView调试包
    • TODO、FIXME、!!!、???、MARK
    • Operation的使用
    • UserDefault
    • 了解WKWebView
    • 输出日志信息到系统控制台
    • Float Double 失去精度问题
    • 使用xcodebuild命令打包导出
    • 在iOS项目中使用C++定义的模块
    • 证书问题
    • 创建常驻线程
  • 源码
    • 阅读PINCache源码
    • 解读AspectHook
    • HandyJSON是如何实现的?
  • 汇编
    • 看懂汇编
由 GitBook 提供支持
在本页
  • 选择器 Selector
  • 消息 Message
  • 方法 Method
  • 方法签名 MethodSignature
  • 实现 Implement

这有帮助吗?

  1. ObjectiveC

Method Selector

上一页检测OC项目中未使用的方法下一页消息转发

最后更新于5年前

这有帮助吗?

选择器 Selector

选择器是方法的名称。你很熟悉这些选择:alloc,init,release,dictionaryWithObjectsAndKeys:,setObject:forKey:,等。注意,冒号是选择的一部分; 这就是我们如何确定这种方法需要参数的方法。另外(虽然它非常罕见),你可以选择这样的选择器:doFoo:::。这是一个接受三个参数的方法,你可以像调用它一样调用它 [someObject doFoo:arg1 :arg2 :arg3]。不要求在选择器组件的每个部分之前都有字母。正如我所说,这是非常罕见的,你不会发现它在 Cocoa 框架中使用。您可以直接在 Cocoa 中使用选择器。他们有类型 SEL: SEL aSelector = @selector(doSomething:)或SEL aSelector = NSSelectorFromString(@"doSomething:");

消息 Message

消息是选择器以及您随之发送的参数。如果我说 [dictionary setObject:obj forKey:key],那么“消息”是选择器 setObject:forKey: 加上参数 obj 和 key。可以将消息封装在 NSInvocation 对象中以供以后调用。消息被发送到接收器。(即,“接收”消息的对象)。

方法 Method

方法是选择器和实现(以及附带的元数据)的组合。“实现”是实际的代码块; 它是一个函数指针 (an IMP)。可以使用 Methodstruct(可从运行时检索)在内部检索实际方法。

方法签名 MethodSignature

方法签名表示方法返回和接受的数据类型。它们可以在运行时通过 NSMethodSignature 和(在某些情况下)原始表示 char*。

实现 Implement

方法的实际可执行代码。它在运行时的类型是一个 IMP,它实际上只是一个函数指针。iOS 4.3 包含了将块转换为块的新功能 IMP。这真的很酷。 要实现的一个有趣的事情是方法的名称(选择器)不同于方法的实现 (IMP)。这意味着如果你感觉大胆,你可以交换它们。您还可以在运行时添加和删除方法,因为您所做的只是编辑哈希表中的条目:键是选择器,值是 IMP 方法的值。这可以让你做一些非常疯狂和冒险的事情。这不适合胆小的人。:)

本文参考: Stackoverflow:

https://stackoverflow.com/questions/5608476/whats-the-difference-between-a-method-and-a-selector