草庐IT

ios - NSURL 扩展采用 StringLiteralConvertible

根据这个post从NSHipster中,我们扩展了NSURL类以使用如下文字初始化NSURL对象://thefollowingisafullfledgedNSURLobjectleturl:NSURL="http://nshipster.com/"不幸的是,这篇文章是在Swift首次发布时写的,它不再编译。我能够让我自己的自定义对象符合StringLiteralConvertible,它看起来像这样:finalclassDog{letname:Stringinit(name:String){self.name=name}}//MARK:-StringLiteralConvertible

swift - 如何定义一个 Swift 协议(protocol),强制其采用者自己遵守相关类型?

我需要处理的对象不仅要符合协议(protocol),还要公开它们所遵循的第二个协议(protocol)的类型。(这是为了与NSXPCConnection一起使用,您不仅必须配置要代理的对象,还要告诉它应在该代理对象上公开哪个协议(protocol)。)我试过类似的方法:protocolConformerwhereSelf:Conformer.P{associatedtypeP:Protocolstaticvarinterface:P{get}init(info:String)}funcexposeOverXPC(__:T.Type){letc:NSXPCConnection=…c.ex

ios - 关于在 Swift 中采用 Objective-C 协议(protocol)的困惑

我对Swift比较陌生,但对Objective-C有经验。我正处于将Swift集成到现有的基于Objective-C的应用程序的初始阶段。我用Swift编写了一个类来模仿我们现有类之一的行为。在新的Swift类中,我实现了一个用Obj-C编写的协议(protocol)。在协议(protocol)中有一个必需的方法定义如下:-(NSString*)getWName;在我的Swift类中,我按如下方式实现了它:funcgetWName()->String!{return"somestring"}方法签名是XCode代码补全产生的。所以这是我的问题:在Swift中,String不是对象,但N

objective-c - 无法在 Swift 中调用采用 int 的 ObjC 方法,因为 Int32 无法转换为 Int

我正在处理Objective-C和Swift的混合项目。我有一个名为Point的类,它是在Objective-C中定义的,它具有int属性和一个初始化程序:@property(nonatomic)intcolumn;@property(nonatomic)introw;-(id)initWithColumn:(int)columnrow:(int)row;我用它在Swift文件中创建对象:Point(column:Column,row:Row)但是报错:cannotinvoke'init'withanargumentlistwithtype'(column:Int,row:Int)'进

swift - 采用协议(protocol)+扩展与使用类实例的区别

我一直在努力掌握面向协议(protocol)的编程,但我不明白以下两种情况之间的区别...场景1我有两个类UIViewControllers。这两个类都需要使用一些通用功能,所以我创建了一个协议(protocol)和一个带有协议(protocol)默认实现的扩展,然后ViewController只需要在类行中包含协议(protocol),它们就会自动继承所需的功能。即...protocolSomeProtocol{funcfoo()}extensionSomeProtocol{funcfoo(){//execute}}classFirstViewController:UIViewCon

objective-c - NSObject 是 Hashable 但采用 NSObject 的协议(protocol)不是?

在我提交雷达之前与社区进行健全性检查:在.hObj-C文件中:@protocolmyProto@end在.swift文件中(可以通过桥接头访问上述协议(protocol)定义):classmyClass{//ThislinecompilesfinevardictOne:[NSObject:Int]?//Thislinefailswith"Type'myProto'doesnotconformtoprotocol'Hashable'"vardictTwo:[myProto:Int]?}对NSObject类的检查表明它(或它映射到的NSObjectProtocol)没有实现Hashable

ios - 如何创建一个可以采用类的值类型的空变量

嘿,我正在尝试弄清楚如何将变量设置为空类的类型。如果不是错误,就像这样:代码:varPlayerEquipped=class()//failedattemptattryingsetupablankvariablethatcantakethetypeofaclass或者创建一个我可以在未来更改的变量。所以基本上我可以毫无问题地创建一个像这样的全局变量,并为其分配一个类。代码:varPlayerEquipped=House()//Inanother.swiftfileihavethe2classesclassHouse{init(){}}classHouse2{init(){}}但是,即使

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

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

java - 哪个更好 - 使用 String 或 File 作为采用文件名的方法的参数类型

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我有几个将文件名作为参数的方法。我的疑问是声明这些方法的参数的更好方法是什么。参数应该是String类型voidnormalizeData(StringinFile)或者我应该将参数显式声明为File。voidnormalizeData(FileinFile)我个人觉得File更直观,但想知道什么是此类事情的最佳实践。

java - 这些方法是如何模棱两可的? (一个采用数组,另一个采用可变参数)

这些append()方法是如何产生歧义的?publicclassTry_MultipleArguments{publicstaticvoidmain(String[]args){intarray1[]=newint[]{1,2,3};intarray2[]=newint[]{4,5,6};append(array1,array2);append(array1,4,5,6);}publicstaticint[]append(int[]array1,int[]array2){int[]ans=newint[array1.length+array2.length];for(inti=0;i更