首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迅速关闭“部分应用货代”

迅速关闭“部分应用货代”
EN

Stack Overflow用户
提问于 2017-11-09 19:08:55
回答 2查看 11.3K关注 0票数 3

我做了一个快速测试,并试图传递一个闭包作为函数参数,但注意到某种“异常”。这款应用程序没有崩溃,而是一条违规的线路,生成了一个崩溃报告。

ViewController

代码语言:javascript
复制
import UIKit

class MapViewController: UIViewController {

    typealias MapTouchHandler = (String) -> Void

    var mapTouchHandlers = Array<MapTouchHandler>()

    @IBAction func tapGestureAction(_ sender: UITapGestureRecognizer) {
            for handler in mapTouchHandlers {

                // This line produces this: "0x000000010c8f8a00 Mediator`partial apply forwarder for reabstraction thunk helper from @callee_owned (@in Swift.String) -> (@out ()) to @callee_owned (@owned Swift.String) -> () at MapViewController.swift"

                handler("tap recognized")
            }

    }

    override func viewDidLoad() {
        super.viewDidLoad()
    }



     func subscribeMapTouchEvent(mapTouchHandler: @escaping MapTouchHandler) {

           // This line produce this: "0x000000010c8ff910 Mediator`partial apply forwarder with unmangled suffix ".16" at Mediator.swift"

            mapTouchHandlers.append(mapTouchHandler)
    }
}

中介类

代码语言:javascript
复制
import UIKit

class Mediator {

    var mapViewController: MapViewController? {
        didSet {
            mapViewController?.subscribeMapTouchEvent(mapTouchHandler: self.handleTouchEvent(str:))
        }
    }

    private func handleTouchEvent(str: String) {
        print(str)
    }
}

感谢任何解决这个问题的洞察力。

EN

回答 2

Stack Overflow用户

发布于 2017-12-22 11:15:33

如果你指的是“自我”,我建议你使用弱自我,这样你就可以避免保留周期,内存泄漏和崩溃。

例如,

代码语言:javascript
复制
getAsynchronousData { [weak self] data in
    guard let self = self else { return }

    self.yourProperty = data 
} 
票数 3
EN

Stack Overflow用户

发布于 2018-04-23 03:55:28

请查看苹果开发者论坛的问答。提示:找到可能是nil的变量,并与Objective-C代码相关。我修好了我的窃听器。祝好运!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47209733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档