草庐IT

SMB1Protocol

全部标签

ios - 类型不符合协议(protocol)

我仍然无法理解Swift中泛型的一些微妙之处。我定义了以下类型:protocolSomeProtocol{funcsetValue(value:Int)}classProtocolLabel:UILabel,SomeProtocol{funcsetValue(value:Int){}}classProtocolImageView:UIImageView,SomeProtocol{funcsetValue(value:Int){}}查看值(value)(2)现在我定义了以下函数。我希望T是一个符合SomeProtocol协议(protocol)的UIView。funcviewForVal

ios - 面向协议(protocol)的编程不会带来继承主要解决的代码重复问题吗?

概览我试图了解Swift的面向协议(protocol)编程范式。根据Apple的WWDC2015视频https://developer.apple.com/videos/play/wwdc2015/408/协议(protocol)可以实现继承所能实现的一切,也解决了继承的根本问题。虽然协议(protocol)通过将每个能力(功能)捕获为协议(protocol)并允许类/结构确认多个协议(protocol)来解决多重继承问题,但我认为协议(protocol)永远不能取代继承,原因如下。假设我正在实现学院/学校自动化软件,并且有两个实体,教职工和校长,并假设他们都上课,但校长和上课一起控制

Swift - 是否有定义 +、-、*、/函数的标准协议(protocol),它被所有 "arithmetic"类型(如 Double、Float、Int 等)采用?

这个问题在这里已经有了答案:WhatprotocolshouldbeadoptedbyaTypeforagenericfunctiontotakeanynumbertypeasanargumentinSwift?(2个答案)关闭7年前。我想编写一个通用函数,它将返回它的两个参数之和,如下所示:funcadd(left:T,right:T)->T{returnleft+right}当然是为了使用+运算符(operator),T类型需要符合定义+的协议(protocol)运营商。对于其他几个运营商,有内置协议(protocol)-例如Equatable对于==,和Comparable对于,

swift - 何时在 Swift 中使用协议(protocol)

我今天问了一个问题,因为我今天有点迷茫。它是关于Swift和协议(protocol)的,更多的是关于面向协议(protocol)的编程(POP)。我阅读了有关它的文章,甚至是一本书,但我仍然感到困惑。每个人似乎都在说Protocol是一个很棒的工具等等,但我并不真正理解它的力量。我有一个问题,因为我正在编写一个类Volume,它表示一个体积作为一个对象。假设structVolume{varvalue:Float=1varisLogScale:Bool=falsevarmaxLogVolume:Float=6.0//valueindBvarmaxLinearVolume:Float=1.

Swift - BLE - 如何添加 CBCentralManagerDelegate 协议(protocol)

我想制作一个使用蓝牙进行通信的ios应用程序。我正在使用swift。所以首先我添加了CoreBluetooth.framework,然后我添加了一个bridge.h并将文件添加到系统桥,导入“CoreBluetooth/CoreBluetooth.h”。然后我创建一个新类,importUIKitclassBTCentral:NSObject,CBCentralManagerDelegate{}我计划在该类中创建一个蓝牙CBCentralManager。但是,上面的代码给我一个错误。Type'BTCentral'doesnotconformtoprotocol'CBCentralMana

generics - 了解快速泛型与将参数视为协议(protocol)或基本类型

有人可以帮助我了解使用泛型比仅使用基类或协议(protocol)的好处吗?也许我只需要多读几遍Swift指南,但泛型的概念就是不深入。考虑这个使用泛型的例子funcremoveObject(object:T,inoutfromArrayarray:[T]){varindex=find(array,object)array.removeAtIndex(index!)}为什么不这样写呢?//Aspointedout,thisdoesnotcompile.Iwasmore-socuriousastowhyfuncremoveObject(object:Equatable,inoutfromA

ios - 使一个协议(protocol)符合另一个协议(protocol)

我有两个协议(protocol):Pen和InstrumentForProfessional。我想让任何Pen成为InstrumentForProfessional:protocolPen{vartitle:String{get}varcolor:UIColor{get}}protocolWatch{}//AlsoInstrumentforprofessionalprotocolTiger{}//NotaninstrumentprotocolInstrumentForProfessional{vartitle:String{get}}classApplePen:Pen{vartitle

arrays - 比较协议(protocol)引用

我有一系列协议(protocol)。现在我想通过使用数组查找协议(protocol)的索引来从数组中删除一个项目。然而,当将协议(protocol)对象与数组中的项目进行比较时,编译器会发出警告:'Protocol'doesnotconformtoAnyObjectprotocolSomeProtocol{}varlist:[SomeProtocol]=[]funcadd(some:SomeProtocol){list+=some}funcremove(some:SomeProtocol){varindex=-1foriin0...list.count-1{if[i]===some{i

swift - 类型约束中有多个协议(protocol)

我想使用通用类型类和类型约束:classMyCustomClass{vara:Arrayinit(){a=Array()}}这很好用。但是如果我想使用第二个协议(protocol)f.e.会发生什么?classMyCustomClass{vara:Arrayinit(){a=Array()}}它说初始化程序失败,因为我必须使用2个参数而不是1个参数。我不明白。 最佳答案 swift3(在您的示例中,我已将IndexableBase替换为Collection,您应该更喜欢后者)根据Swift3,协议(protocol)组合使用中缀运算

特定类的 Swift 协议(protocol)

我想定义一个符合P1的UIViewController类型的变量。问题:我应该修改协议(protocol)还是v1类型?我应该怎么做?代码:protocolP1{funcf1();}varv1:P1//ButneedstobeaUIViewControllerwhichconformsto`P1` 最佳答案 在Swift4中,你可以使用新的&符号来创建一个符合协议(protocol)和类的变量,语法如下:letvc:UIViewController&P1 关于特定类的Swift协议(pr