1
|
Gagan_iOS · 技术社区 · 6 年前 |
![]() |
1
3
对于“几乎匹配”,编译器会告诉您两件事:
编译器告诉您有问题,这很好。这不是很好,它不能解释问题的确切原因。
问题是类的可见性比委托方法强。
你的班级是
解决方法是给委托方法
你得换衣服
到
这将使编译器知道该方法实际上是一个委托方法。 奖励内容…
我是如何找到解决方案的?
我用xcode转载了这个问题。我点击了警告并阅读了修正本:“让‘textfielddidbeginediting’成为非公开的,使这个警告保持沉默。”我单击了“fix”,该行更改为“private func textfieldDidbeginediting(utextfield:uitextfield)”。所以我想也许可以改变它
为什么斯威夫特会这么做? 我不确定,但我的猜测是:如果一个类是公共的,但是协议方法是内部的,这意味着从模块的角度来看,单个视图控制器对象实现协议。但是,由于协议实现是内部的,所以从外部模块(例如从uikit)的角度来看,协议方法将不可用。但这在目标C运行时是不可能的,即使可能,也会很糟糕。悄悄地将协议方法公开或半公开是可能的,但不是很干净:例如,可以使textfieldDibegineding成为内部的,但当您将对象强制转换为uitextfieldDelegate伪对象时,您可以突然调用该方法,这也会令人惊讶。 |
![]() |
2
2
试试这个
|
![]() |
3
1
将您的方法也标记为
|
![]() |
Mark George · 如何在swift ui中为文本提供内部填充 1 年前 |
![]() |
Safa Ads · CDN:无法下载中继URL:https://cdn.jsdelivr.net/cocoa/Specs/2/e/c/RxSwift/3.0.0-rc.1/RxSwift.podspec.json响应:SSL连接错误 1 年前 |
![]() |
Frakcool · 满足条件时,SwiftUI动画背景颜色更改 2 年前 |