草庐IT

SMB1Protocol

全部标签

swift - 快速实现带有内部类的公共(public)协议(protocol)

所以我正在编写一个Swift框架,我想只通过一个协议(protocol)公开一些对象。例如:publicprotocolThing:class{varx:Int{get}}我想隐藏我的实现细节,所以我制作了一个内部类:internalclassThingImpl:Thing{publicprivate(set)varx:Int=0}并通过工厂方法出售新的Things:publicfuncnewThing()->Thing{returnThingImpl()}我不明白的是为什么编译器警告我关于在ThingImpl中制作varxpublic并鼓励我在内部声明它.尽管有警告,一切都运行良好,

Swift 3,协议(protocol)中的函数返回符合协议(protocol)的类的对象

我已经阅读了很多关于类和协议(protocol)的文章,但仍然没有找到解决方案。可能是我没有完全理解它们。所以有一个简单的协议(protocol)(删除了一些与问题无关的部分):protocolInfoObject:NSObjectProtocol{varstatusImage:UIImage?{get}funcviewControllerForItemIndex(_index:Int?)->UIViewController?}但我希望函数viewControllerForItemIndex不仅返回类型为UIViewController?的对象,而且它应该符合协议(protocol)I

xcode - 你怎么知道一个 Swift 类是从另一个类继承还是符合协议(protocol)?

例如,如果我们有一个继承自Bar类的Foo类,并且符合Baz协议(protocol):classBar{}protocolBaz{}Foo类:Bar、Baz{}如果我们事先不知道Bar是一个类而Baz是一个协议(protocol)怎么办(例如,当阅读别人的代码时)。在这种情况下,由于在classFoo:之后有多个声明,它可能很清楚。在Swift中,协议(protocol)一致性声明必须在继承子句中的父类(superclass)声明之后。另一方面,这也可以是一个符合多种协议(protocol)的没有继承的类。还有如果继承子句中只有一个声明怎么办?classFoo:Bar{}或者:clas

types - 在 Swift 中实现闭包协议(protocol)

我想在我的Swift项目中创建一些函数,这些函数可以接受对象或返回该对象类型的闭包。我当然可以在每个地方定义具有多个签名的相同函数,但那太冗长了。我还希望能够创建这些对象/对象返回闭包的类型安全列表,但如果没有一些通用类型来描述这两者,我就无法做到这一点。这就是我想做的typealiasStringClosure=()->StringprotocolStringable{functoStringClosure()->StringClosure}extensionString:Stringable{functoStringClosure()->StringClosure{return{r

ios - 在 Swift 上委托(delegate) Objective-C 协议(protocol)

我正在使用Swift语言在iOS上实现一个UDP监听器。为此,我转达了CocoaAsyncSocket项目。我成功地使用Bridging-Header.h导入了CocoaAsyncSocket库,我可以调用Objective-C类中的函数,但我无法在swift上编写委托(delegate)函数。这是我设置Socket并将ViewController.swif定义为监听器的委托(delegate)类的代码:funcsetupSocket(){varudpSocket:GCDAsyncUdpSocket=GCDAsyncUdpSocket(delegate:self,delegateQue

swift - 在基类中实现 Swift 协议(protocol)方法

我有一个Swift协议(protocol),它定义了如下方法:protocolMyProtocol{classfuncretrieve(id:String)->Self?}我有几个不同的类将符合这个协议(protocol):classMyClass1:MyProtocol{...}classMyClass2:MyProtocol{...}classMyClass3:MyProtocol{...}每个子类中retrieve方法的实现几乎相同。我想将这些函数的通用实现拉入符合协议(protocol)的共享父类(superclass)中:classMyBaseClass:MyProtocol

ios - 如何将 ViewController 数组转换为协议(protocol)类型数组

我有一个UITabBarController,它的viewControllers都实现了Refreshable协议(protocol)。为什么我无法将选项卡栏Controller的viewControllers属性解包为Refreshable类型的数组?iflettabs=self.tabBarController.viewControllersas?[Refreshable]{//Somecodetabs[0].refresh()//refresh()isafunctioninRefreshable}没有编译错误,但是iflet闭包中的代码永远不会执行。我怎样才能正确地做到这一点?添

ios - 应用程序在没有协议(protocol)功能的情况下编译 - 为什么?

初学swift,请轻点我正在使用XCode提供的Master-Detail示例中的AppDelegate.swift文件。Appdelegate文件有第一行classAppDelegate:UIResponder,UIApplicationDelegate{我的理解是AppDelegate是UIResponder的子类并且符合UIApplicationDelegate协议(protocol)据我所知,遵守UIApplicationDelegate协议(protocol)意味着它必须具有以下方法:applicationDidBecomeActive:applicationWillResi

swift - 为什么总是在 Swift 协议(protocol)中使用 static 关键字作为类型属性要求的前缀?

在TheSwiftProgrammingLanguage一书的第369页,它说“在协议(protocol)中定义类型属性要求时,始终使用static关键字作为前缀。”示例代码:protocolAnotherProtocol{staticvarsomeTypeProperty:Int{getset}}这样做的原因或好处是什么? 最佳答案 因为没有static关键字,您最终声明的是实例属性而不是类型属性。紧跟在您引用的段落之后的示例显示了这一点:Here’sanexampleofaprotocolwithasingleinstancep

objective-c - 在我的 Swift 应用程序中使用来 self 的 XPC 服务的 Objective-C 协议(protocol)

我有一个用Swift编写的应用程序,完全用Swift编写,从来没有Obj-C类,没有Obj-C文件或桥接header。为了在不影响我的应用程序权利的情况下添加一些功能,我尝试添加一个XPC服务——我在Xcode中创建了它,Xcode中的XPC服务模板仅为Obj-C。很好,我在Obj-C中编写了我的服务,但现在当我想通过NSXPCConnection调用我的服务时,我必须设置它的接口(interface),然后执行此操作我需要在我的Swift应用程序代码中引用我为XPC目标编写的Obj-C协议(protocol)。我该怎么做?我不能只将“Protocol.h”添加到我的应用程序目标,它没