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中怎么写的主要内容,如果未能解决你的问题,请参考以下文章

ObjC 协议可能无用

delegate委托事件(动态创建元素注册事件)

id objc_msgSend(id self, SEL op, ...)

jQuery教程 .bind() .live() .delegate() .on()区别详解

jquery中bind,live,delegate,on的区别

理解 isa