首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我的选择器函数没有在自定义Swift类中调用

选择器函数是在Objective-C中使用的一种机制,用于在运行时动态地将方法与对象关联起来。在Swift中,选择器函数的使用方式与Objective-C有所不同。

在Swift中,我们通常使用闭包(Closure)来实现与选择器函数类似的功能。闭包是一种自包含的函数代码块,可以在代码中被传递和引用。通过使用闭包,我们可以在自定义Swift类中调用函数。

如果你的选择器函数没有在自定义Swift类中调用,可能有以下几个原因:

  1. 语法错误:请确保你的选择器函数的语法是正确的,包括正确的参数和返回类型。在Swift中,函数的定义和调用方式可能与Objective-C有所不同。
  2. 函数命名错误:请检查你的选择器函数的命名是否正确,并且在调用函数时使用了正确的函数名。
  3. 函数访问权限:请确保你的选择器函数的访问权限是公开的(public),以便在自定义Swift类中进行调用。
  4. 函数调用位置错误:请检查你的选择器函数是否在正确的位置进行调用。在Swift中,函数的调用通常是通过实例化对象后,使用点语法来调用的。

总结起来,要解决选择器函数没有在自定义Swift类中调用的问题,你可以检查语法错误、函数命名错误、函数访问权限以及函数调用位置是否正确。如果问题仍然存在,可能需要进一步检查你的代码逻辑和调试过程。

腾讯云相关产品和产品介绍链接地址:

  • 云函数(Cloud Function):https://cloud.tencent.com/product/scf
  • 云服务器(Cloud Virtual Machine):https://cloud.tencent.com/product/cvm
  • 云数据库(Cloud Database):https://cloud.tencent.com/product/cdb
  • 云原生应用引擎(Cloud Native Application Engine):https://cloud.tencent.com/product/tke
  • 云存储(Cloud Storage):https://cloud.tencent.com/product/cos
  • 人工智能(Artificial Intelligence):https://cloud.tencent.com/product/ai
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

创建子类对象时,父构造函数调用被子类重写方法为什么调用是子类方法?

A对象时候父调用子类方法?...但是:创建B对象父调用方法? 答案: 当子类被加载到内存方法区后,会继续加载父到内存。...如果,子类重写了父方法,子类方法引用会指向子类方法,否则子类方法引用会指向父方法引用。 如果子类重载了父方法,则子类重载方法引用还指向子类方法。...如果子类方法没有重写也没有重载父方法,则方法引用会指向父方法。 当子类对象创建时,会先行调用构造方法(构造方法也是方法),虚拟机会在子类方法区寻找该方法并运行。...其结果是当编译时候,父构造方法调用方法参数已经强制转换为符合父方法参数了。 上边代码在编译前已经转换为下面这个样子了。

6.1K10

C# 自定义控制台输出重定向整合调用方信息

C# 自定义控制台输出重定向整合调用方信息 目录 C# 自定义控制台输出重定向整合调用方信息 一、前言 二、输出重定向基础版 三、输出重定向进阶版(传递调用方信息) 四、后记及资源 独立观察员...而在 Winform、WPF、网页程序,使用这种方法输出信息是没有地方显示,在这些程序,我们一般把信息输出到相应显示控件,或者写入日志。...原来构造函数添加了这么一句 —— Console.SetOut (new ConsoleWriter (ShowInfo)); —— 这就把原本输出到控制台消息,重定向给了方法 ShowInfo...Write 方法,然后重写 Write 方法调用外部设置好(通过构造函数)相关委托方法进行实际信息输出。...行号显示是 18 而不是 69?其实这里显示信息是构造函数(因为重定向语句在那里)。那么有没有办法显示实际调用位置呢?我们继续改造。

1.6K20

汇编寄存器规则

了解汇编如何工作以及特定架构调用约定如何工作是一项极其重要技能。它可以让您观察没有源代码函数参数,并允许您修改传入函数参数。...随后是一个选择器,它只是一个 char *,用于指定在对象上调用方法名称。 最后,如果选择器指定应有参数,则 objc_msgSend 函数采用可变数量参数。..., "sharedApplication"); 第一个参数是对 UIApplication 引用,其后是 sharedApplication 选择器 其实就是需要被调用方法。...这意味着当 Swift 调用函数时,先前分配给选择器 RSI 寄存器实际上就是函数第二个参数。好了,足够理论 - 是时候将其付诸实践了。...RAX 寄存器用于函数返回值,无论您使用是 Objective-C 还是 Swift。 您可以利用寄存器做很多事情。尝试浏览您没有源代码应用;将为解决棘手调试问题奠定良好基础。

2.4K50

iOS开发常用之网络

此项目应该只用于演示或学习之用,没有服务器 - swift。 Atlas-iOS - 快速iOS里集成聊天功能,类似开源版本环信.Layer家开源了一套聊天app界面的解决方案。...SwiftyFORM - swift表单输入框架(亮点是表单验证规则引擎),是见过地最易用Swift表单组件。...InceptionTouch.swift - 让没有3D Touch设备也有类似交互体验InceptionTouch(基于UITextView实现,支持日期,链接,电话号码,地址触摸响应)。...MMTweenAnimation - Facebook POP自定义动画扩展(基于POPCustomAnimation)提供10种函数式动画。...ADo_GuideView - 转动用户引导页(模仿网易bobo)因为没有从应用程序包里抓到@ 3x图片,建议iPhone5模拟器运行,保证效果〜(版本新特性,导航页,引导页)。

23.5K10

iOS开发 —— Swift版地址选择器

现在这个公司项目使用了Swift开发,一直想在自己项目中也运用Swift,但是一直也没有机会,所以这次能够使用Swift正儿八经开发,也是超级兴奋。...所以从以后开始,iOS系列文章会逐渐Swift语言越来越相关。不得不说只有实际开发才能发现Swift中等着要去踩坑还有很多。没辙了,爱他就拼命去填坑吧。...之前OC写很多省市选择器,都是封装不够完善,直接调用存在很多问题。并且处理省市联动问题上,常常是通过拆分省市区为三个数组,当其中一个数据变化时,再根据 index来处理之后数据联动。...所以这次就本着提高复用性想法,对地址选择界面做了比较全面的封装,之后任何地方调用就非常方便。...首先把UIPickerView这个两个代理方法自己里实现,以后调用时候不用再去实现UIPickerView两个Delegate Method,之后我们再提供一个协议,用最简单方式来完成数据获取

1.7K20

Swift Runtime ?

但对于OC函数,属于动态调用过程,在编译时候并不能决定真正调用哪个函数,只有真正运行时候才会根据函数名称找到对应函数调用。      ...添加了一些变量,然后通过Runtime方法尝试着先来获取一下我们最上面定义SwiftTestASwiftClass属性,你运行上面代码你就会发现:       什么都没有!!!...下面我们先给出答案,用它来解释一下为什么我们通过上面RuntimeAPI没有获取到任何东西,然后再接着用OC来证明一下我们说结论:       C 语言是函数编译时候决定调用那个函数,在编译阶段...SwiftSwift函数调用已经不是OC运行时发送消息,和C类似,在编译阶段就确定了调用哪一个函数,所以纯Swift我们是没办法通过运行时去获取到它属性和方法。      ...Swift 对于继承自OC,为了兼容OC,凡是继承与OC都是保留了它特性,所以可以使用Runtime获取到它属性和方法等等其他我们OC获得东西。

4.9K71

Swift-Runtime总结

但对于OC函数,属于动态调用过程,在编译时候并不能决定真正调用哪个函数,只有真正运行时候才会根据函数名称找到对应函数调用。      ...添加了一些变量,然后通过Runtime方法尝试着先来获取一下我们最上面定义SwiftTestASwiftClass属性,你运行上面代码你就会发现:       什么都没有!!!...下面我们先给出答案,用它来解释一下为什么我们通过上面RuntimeAPI没有获取到任何东西,然后再接着用OC来证明一下我们说结论:       C 语言是函数编译时候决定调用那个函数,在编译阶段...SwiftSwift函数调用已经不是OC运行时发送消息,和C类似,在编译阶段就确定了调用哪一个函数,所以纯Swift我们是没办法通过运行时去获取到它属性和方法。      ...Swift 对于继承自OC,为了兼容OC,凡是继承与OC都是保留了它特性,所以可以使用Runtime获取到它属性和方法等等其他我们OC获得东西。

72130

【自问自答】关于 Swift 几个疑问

感觉自己给自己释疑,也是一个极为有趣过程。这次,还新增了“猜想”一栏,来尝试回答一些暂时没有足够资料支撑问题。 Swift 版本是:4.0.3。不同版本 Swift,可能无法复现问题。...继承自NSObjectSwift,其继承自父方法具有动态性,其他自定义方法、属性需要加dynamic修饰才可以获得动态性。...如果是模块B,通过 extension 覆盖模块Aprivate 方法.然后模块 C 同时引入了模块 A 和 B,此时模块C类似的函数调用,会是哪个模块方法实现生效?...疑问: 为什么函数定义外 closure 不会引起作用域内其他变量引用计数变化?...另外,参考 objc block 行为,尝试搜索相关 swift 栈(stack) block 相关信息.如果 closure 也区分栈和堆,倒是还可以勉强解释.不过,并没有相关信息,而且

1.4K60

Swift学习笔记(初始化过程)

km以及网上介绍swift基本语法文章已经有不少,这里就不累赘。这篇文章主要想讲的是:swift初始化。 首先必须明确两个基本点是: 1.swift中最基本数据类型是结构体,以及枚举。...3.默认构造函数   如果结构体或所有属性都有默认值,但没有自定义构造函数以及继承构造函数,那么 Swift 会给这些结构体或提供一个默认构造函数。...4.结构体逐一成员构造函数 除了上面提到默认构造函数swift,如果一个结构体属性申明时候没有设置默认值,也没有自定义构造函数swift也会帮助结构体创建一个逐一成员构造函数。...由于值类型无法继承,所以构造函数代理,你只能调用自己其他构造函数类型:由于可以继承,所以构造函数代理涉及到调用构造函数。所以下面将介绍swift构造函数继承中发挥作用。...如果你重写父一个构造函数,那么你必须在重写函数前面加上override 修饰符,即使 你重写是默认构造函数 或者 你将父指定构造函数重写成便利构造函数,因为重写构造函数,有可能会调用到具有相同函数名和参数函数

1.2K60

iOS开发常用之摄像照相视频音频处理

删除任何你不想要记录段。可以使用任何视频播放器播放片段。保存记录可以序列化NSDictionary中使用。(NSUserDefaults操作)添加使用Core Image视频滤波器。...ICGVideoTrimmer - ICGVideoTrimmer提供视频剪切视图。左右两个边界选择器还能够自定义。...自定义视频播放器AVPlayer - 利用系统AVPlayer实现完全自定义视频播放器,显示播放时间,缓存等功能。代码清晰,注释详细。...Periscope-VideoViewController.swift - 简洁实用视频快进,倒带控制视图库。...IWatch - 一个视频日报应用播放器用到了AVFoudation。 SkfSwiftCamm​​er - 一个相机演示,oc里面调用swift

2.7K51

iOS开发常用之图像浏览及处理

MWPhotoBrowser - 一个非常不错照片浏览器,githubstar接近3000个,解决MWPhotoBrowserSDWebImage加载大图导致内存警告问题。...PictureWatermark - 主要实现了给图片加文字以及图片水印功能,已封装成了UIImage类别,方便使用。 自定义宽高比相册框拍照 - 取出照片时弹出自定义视图。...SKPhotoBrowser.swift - swift中规中矩,实用图片浏览库。示例也很完整。 Nuke.swift - 完整,强大,实用图片管理库。...更换头像 - 用户选取从相机或者相册获取图片,并且显示查看上。 DouBanMeinv.swift - 抓取豆瓣美女图片,瀑布流显示。...YLFaceuDemo - 直播应用添加Faceu贴纸效果.Faceu贴纸效果其实就是人脸上贴一些图片,同时这些图片是跟随着人脸位置改变。说明

3.8K60

Swift 周报 第三十七期

当对元组类型调用协议要求时,由元组类型元素形成一个包;这成为调用协议见证每个 T 通用参数。 孤儿规则 大多数情况下,元组一致性行为就好像它们是标准库类型上用户定义追溯一致性。...如果某个函数本身使用参数包从包形成元组值,则对该值调用协议要求将调用元组一致性见证或单个元素见证,具体取决于包大小。 标记元组和方差 元组标签不是参数包可以抽象东西。...讨论无法从 Objective C 调用 swift 扩展方法[8] 为 ViewController 创建了 swift 扩展,并在其中定义了一种方法。...当我尝试从同一个 Obj-c ViewController 调用相同方法时,它给出了以下错误: ViewController 没有可见 @interface 声明选择器 testMe 代码如下:...最后,博客总结了保证线程安全性重要性,并鼓励开发过程早期就投入时间来构建类型安全代码。

16030

iOS面试资料参考答案总结

2、Swift方法调用有哪些形式? 答:直接派发、函数表派发、消息机制派发。派发方式受声明位置,引用类型,特定行为影响。为什么Swift有这么多派发形式?为了效率。...Swift和OC区别有很多,这里简要总结这几条: Swift Objective-C 语言特性 静态语言,更加安全 动态语言,不那么安全 语法 更精简 冗长 命名空间 有 无 方法调用 直接调用函数调用...,如果没加载完毕的话进行加载 从cache查找方法 cache没有找到对应方法,则到方法列表查,查到则缓存 如果本类查询到没有结果,则遍历所有父重复上面的查找过程,直到NSObject 2、...如果消息转发也没有处理即为无法处理,会调用 doesNotRecognizeSelector ,引发崩溃。 4、category能否添加属性,为什么?能否添加实例变量,为什么?...关于这一话题深入讨论可以参考这两篇文章: 为什么要存在MetaClass 为什么要设计metaclass 6、方法是存储到什么地方?类属性呢? 方法和类属性都是存储到元

1.5K40

Swift5.0Runtime机制浅析

Swift描述信息结构继承自OC描述信息,但是并没有完全使用里面定义属性,对于方法调用则主要是使用其中扩展了一个所谓函数区域,关于这部分会在后续详细介绍。...Swift对象实例都是堆内存创建,这和OC语言对象实例创建方式相似。系统会为提供一个默认init构造函数,如果想自定义构造函数则需要重写和重载init函数。...定义常规方法 如果是Swift定义常规方法,方法调用机制和C++函数调用机制是非常相似的。...方法以及全局函数 Swift定义方法和全局函数一样,因为不存在对象作为参数,因此调用此类函数时也不会存在将对象保存到x20寄存器这么一说。...本文结论是Swift5通过程序运行时观察汇编代码所得出结论。为了能让大家更好理解,将大部分代码翻译为了用C语言伪代码来实现。

2.2K21

Swift 项目中涉及到 JSONDecoder,网络请求,泛型协议式编程一些记录和想法

对于来自网络 JSON 结构化数据处理,可以使用 JSONDecoder 这个苹果自己提供字符串转模型,这个 Swift 4 Fundation 模块里提供,可以Swift 源码目录...其实面试过程通常都会有些算法题环节,很多人都以为只要有了解决思路或者写出简单处理代码就可以了,碰到了一些面试人甚至用中文一条条写出思路以为就完事了。..._convertFromSnakeCase 这个枚举静态函数会在创建 container 时候调用,具体使用函数是 _JSONKeyedDecodingContainer,初始化方法里会判断...不过 Alamofire 写法已经做了一些简化,当然里面还实现了更多功能,待会再说,现在主要任务是简化调用。...函数式思想编程 处理映射成表达式是设置布局属性最复杂地方,需要考虑兼顾到各种表达式情况处理,这样救需要设计一个类似 SnapKit 那样可链式调用设置值结构,先设计了一个结构体用来存一些可变信息

6.5K20

2020年6月最新iOS面试题总结(答案篇)

2、Swift方法调用有哪些形式? 答:直接派发、函数表派发、消息机制派发。派发方式受声明位置,引用类型,特定行为影响。为什么Swift有这么多派发形式?为了效率。...Swift和OC区别有很多,这里简要总结这几条: Swift Objective-C 语言特性 静态语言,更加安全 动态语言,不那么安全 语法 更精简 冗长 命名空间 有 无 方法调用 直接调用函数调用...invoke,函数指针,指向具体 block 实现函数调用地址。...,如果没加载完毕的话进行加载 从cache查找方法 cache没有找到对应方法,则到方法列表查,查到则缓存 如果本类查询到没有结果,则遍历所有父重复上面的查找过程,直到NSObject 2、...关于这一话题深入讨论可以参考这两篇文章: 为什么要存在MetaClass 为什么要设计metaclass 6、方法是存储到什么地方?类属性呢? 方法和类属性都是存储到元

9K41

202 - Swift 核心是什么?

如今已经过去两年,想 struct 数量应该更多了。既然 Swift 里用了这么多 struct,为什么我们不试试用 struct 呢?...当我自定义 UIView 时候,想让 view 从 xib 加载,那么就需要在每个里都写一个从 xib 加载方法,如下代码: static func classMethodCreateView...想大多数人第一反应应该是 struct 是值类型 class 是引用类型,也就是说 struct 实例在被赋予变量或者常量或者被函数调用时都会被复制,但是 class 实例会被引用,引用就是已经存在实例本身而不是复制...,可以阅读下面的文章:理解Swiftstruct和class不同情况下性能差异,文章介绍很详细,这里也不再详细介绍了。...说了这么多,最后还是希望你们能明白 Swift 是面向协议编程, 开发过程请多使用 struct 和 protocol,当你没有选择时候再使用 class。

93920

iOS安全基础之钥匙串与哈希

了解同时,还会告诉你如何使用一些基本加密哈希方法来安全地将你输入信息存储iOS钥匙串,这样一来,你数据私密性和受保护程度都将大幅度提高。...你仍然需要存储用户对象以及密码,这些都会在helper实现。 打开AuthController.swift,这是一个静态,它将保存与此应用程序身份验证相关逻辑。...你仍然需要存储用户对象以及密码,这些都会在helper实现。 打开AuthController.swift,这是一个静态,它将保存与此应用程序身份验证相关逻辑。...注意:苹果CommonCrypto框架为你提供了许多有用哈希函数,但在Swift与它进行交互并不容易。这就是为什么我们选CryptoSwift库原因。...现在你就有了一个应用程序中使用身份验证完整示例! 哈希 还记得刚刚说到朋友列表里只有名字,没有头像问题吗?现在就来解决这个问题。

2.7K20

iOS开发之 Method Swizzling 深入浅出

该方法第一个参数指向调用方法自身(即内存实例对象,若是调用方法,该指针则是指向元对象(metaclass)。第二个参数是这个方法名字selector,该方法真正参数紧随其后。...Swizzling+load执行时,不要调用[super load]。...如果多次调用了[super load],可能会出现“Swizzle无效”假象,原理见下图: [dos2ufzkl1.png] Swift 自定义中使用 Method Swizzling 要在 Swift...) 注:对于 Swift 自定义,因为默认并没有使用 Objective-C 运行时,因此也没有动态派发方法列表,所以如果要 Swizzle Swift 类型方法的话,是需要将原方法和替换方法都加上...再注:下面这个例子使用了 Objective-C 动态派发,对于 NSObject 子类(UIViewController)是可以直接使用,并不是 Swift 自定义,因此没有加 dynamic

2.3K70

iOS:关于WWDC2020-Objective-C运行时改进

WWDC2020 Objective-C 运行时改进这个视频提到关于数据结构一些变化,本文是对这个视频提到部分变化进行翻译。...“ro”代表只读,它包括像名词,方法,协议,和实例变量信息。Swift 和 Objective-C 共享这一数据结构,所以每个 Swift 也有这些数据结构。...但为什么方法和属性也只读数据时,这里还要有方法和属性呢?...首先是方法名称,或者说选择器选择器时字符串,但它们具有唯一性,所以它们可以使用指针相等来进行比较。...最后,还有一个指向方法实现指针,方法实际代码,当你编写一个方法时,它会编译成一个 c 函数,其中包含你实施,然后方法列表 entry 会指向该函数

47920
领券