objc 中 id<delegate>这个类型在swift中怎么写
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了objc 中 id<delegate>这个类型在swift中怎么写相关的知识,希望对你有一定的参考价值。
# 方法一: 使用stringstream stringstream在int或float类型转换为string类型的方法中已经介绍过, 这里也能用作将string类型转换为常用的数值类型。 #方法二:使用atoi()、 atil() 、atof()函数 -----------------实际上是char类型向数值类型的 参考技术A 以下是完整的代理使用代码,希望对你有用//协议
protocol LAMDelegate: NSObjectProtocol
func myFunc()
class CView: UIView
var delegate:LAMDelegate!
var btn:UIButton!
override init(frame: CGRect)
super.init(frame:frame)
self.backgroundColor = UIColor.redColor()
btn = UIButton.buttonWithType(UIButtonType.System) as UIButton
btn.backgroundColor = UIColor.redColor()
btn.addTarget(self, action:"click:", forControlEvents: UIControlEvents.TouchUpInside)
btn.frame = self.bounds
self.addSubview(btn);
func click(button: UIButton)
if self.delegate != nil && self.delegate.respondsToSelector("myFunc")
self.delegate.myFunc()
required init(coder aDecoder: NSCoder)
fatalError("init(coder:) has not been implemented")
class ViewController: UIViewController,LAMDelegate
override func viewDidLoad()
super.viewDidLoad()
let cv = CView(frame: CGRectMake(200, 200, 40, 30))
cv.delegate = self
self.view.addSubview(cv)
//TODO: 实现代理方法
func myFunc()
println("写入你的代码")
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
Objc <-> Swift 通用函数的 Swift 兼容性
【中文标题】Objc <-> Swift 通用函数的 Swift 兼容性【英文标题】:Objc <-> Swift compatibility for swift generic function 【发布时间】:2017-12-17 14:25:00 【问题描述】:以下功能:
func popTo<ViewController>(viewController: ViewController.Type, animated: Bool) where ViewController: UIViewController
仅适用于 Swift。我需要在 objc 代码中使用这个方法。在重新考虑了一堆选项之后,我不确定如何使它与 objc 兼容。可能最简单的选择是创建另一个以某种方式将其暴露给 objc 的函数,但我不确定哪种解决方案最适合处理它。
【问题讨论】:
您需要通用占位符吗?否则直接说@objc func popTo(viewController: UIViewController.Type, animated: Bool)
。
@Hamish 不幸的是,我确实需要这个,所以我不知道该怎么做。
你是如何使用它的?你能告诉我们实现吗?
@Hamish 那是一条相当长的链:/ 通常在某些时候它会回到 swift 实现,但由于用 objc 编写的旧实现,它也会进入 objc。
嗯,好的,但是可以显示通用占位符是如何使用的吗?不能直接使用viewController
元类型(在我上面的建议中)吗?
【参考方案1】:
func popTo<ViewController>(viewController: ViewController.Type, animated: Bool) where ViewController: UIViewController
等价于
func popTo(viewController: UIViewController, animated: Bool)
它是“objc-able”
【讨论】:
不,不一样。第一个传递类型,以便您例如。写popTo(MyViewControllerSubclass)
而不是 popTo(myInstanceOfMyViewControllerSubclass)
在你的代码中。当您没有实例时,这一点非常重要。以上是关于objc 中 id<delegate>这个类型在swift中怎么写的主要内容,如果未能解决你的问题,请参考以下文章
id objc_msgSend(id self, SEL op, ...)
jQuery教程 .bind() .live() .delegate() .on()区别详解