gpt4 book ai didi

swift - EXC_BAD_ACCESS 使用 self.performSelector

转载 作者:搜寻专家 更新时间:2023-10-31 08:22:40 26 4
gpt4 key购买 nike

这是一个简单的学术而非真正的代码。

我想使用 performSelector 函数运行打印方法。但是如果我在 Playground 上运行这段代码,就会抛出异常:

EXC_BAD_ACCESS (code=EXC_I386_GPFLT).

代码:

//: Playground - noun: a place where people can play

import UIKit

@objc(Foo)
class Foo: NSObject {

func timer() {
self.performSelector( #selector(Foo.print))
}

@objc func print() {
NSLog("print")
}
}

let instance = Foo()
instance.timer() // <-- EXC_BAD_ACCESS (code=EXC_I386_GPFLT)

问题出在哪里?

最佳答案

尝试将您的 Foo.print() 更改为如下内容:

    @objc func print() -> AnyObject? {
NSLog("print")
return nil
}

我相信代码也在 Playground 中运行。

performSelector 的返回类型不是 Void

- performSelector:

func performSelector(_ aSelector: Selector) -> Unmanaged<AnyObject>!

因此,Playground 尝试获取要显示的结果值。实际上并没有返回。

关于swift - EXC_BAD_ACCESS 使用 self.performSelector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38460490/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com