草庐IT

Self-Driving

全部标签

swift - 使用从另一个协议(protocol)继承或使用 where Self 声明 swift 协议(protocol)时的区别

我仍然不明白使用继承声明Swift协议(protocol)时有什么区别:protocolSubProtocol:SuperProtocol{...}或使用whereSelfprotocolSubProtocolwhereSelf:SuperProtocol{...}通过以这两种方式执行此操作,结果完全相同,两个选项都可以正常编译,并且可以正常工作,SubProtocol将具有与SuperProtocol相同的内容。那有什么区别呢?我能看到的唯一区别是语义,一个比另一个更清楚(见下面的例子)。但这是我的观点,我想知道其他人是否也这么认为,或者我可能误解了整件事。示例:protocolPr

ios - 在 Swift 闭包中使用 [weak self] 和赋值

我一直在玩弄Swift并将AFNetworking集成到一个项目中,并且有一些我不是特别满意的代码。拥有alreadyposted在Apple开发论坛上没有得到回复,我想我会把它带到SO...我的类具有对AFHTTPSessionManager实例的强引用,以下代码段是调用GET(_,parameters,success,failure)时使用的闭包方法。letfailure={[weakself](task:NSURLSessionDataTask!,error:NSError!)->(Void)iniferror?.userInfo[AFNetworkingOperationFai

ios - #selector(Aclass.method) 和#selector(self.method) 的区别

这个问题在这里已经有了答案:HowdoIresolve"ambiguoususeof"compileerrorwithSwift#selectorsyntax?(3个答案)关闭6年前。有什么区别:#selector(Aclass.someMethod)和#selector(self.someMethod)someMethod是一个实例函数,我在AClass内部调用是这样的:NSNotificationCenter.defaultCenter().addObserver(self,selector:#selector(self.someMethod),//#selector(Aclass

swift - 非最终类无法满足协议(protocol)要求,因为它在非参数、非结果类型中使用 'Self'

这个问题在这里已经有了答案:ASwiftprotocolrequirementthatcanonlybesatisfiedbyusingafinalclass(4个答案)关闭6年前。我想用一个类方法实现一个协议(protocol),该类方法将实现类的数组作为参数。例如这样的事情:protocolMyProtocol{staticfuncfoo(verticies:[Self])->Int}classMyClass:MyProtocol{classfuncfoo(verticies:[MyClass])->Int{return42}}当我尝试这样做时,出现以下错误:Protocol'My

ios - .self 在 Swift 中的结构类型之后

我对Metal示例中的一行代码感到困惑,其中内存指针绑定(bind)到一个类型。uniforms=UnsafeMutableRawPointer(uniformBuffer.contents()).bindMemory(to:Uniforms.self,capacity:1)我的困惑是Uniforms类型之后的.self。Uniforms是在Objective-C文件中定义的结构,如果调用中没有.self,代码将无法运行。为什么有必要? 最佳答案 .self返回相应类型的元类型实例。将其视为类型安全的类型标识符(例如,比使用字符串更

swift - 为什么我不能在 Range 扩展中循环 self?

我有这个扩展:extensionRange{funcfoo(){//calledwith(0..print(type(of:self))//Rangeforiinbar{//:)}forjinself{//:(}}}出于某种原因,第一个循环没问题,但第二个循环不行。我得到一个编译时错误说Type'Bound'doesnotconformtoprotocol'Strideable'这里还需要注意的一点是,将bar赋值给self会导致错误在第一个循环中弹出。 最佳答案 向编译器明确说明Bound是Strideable:extension

properties - 在 Swift init 中使用 self 和不使用 self 的区别

我注意到在Swift初始化器中初始化属性可以同时使用:self.property=1和property=1这两者有什么区别吗?如果不是,是否存在一种优胜劣汰的惯例? 最佳答案 在第一个中,您明确表示它是一个类/结构属性,而在第二个中它是隐式的。但是有一个很大的区别:如果有一个同名的局部变量(例如传递给init的参数),它将优先并隐藏类/结构属性。作为一个偏好问题,我总是更喜欢通过使用self使其显式化。此外,通过这样做,我可以避免在我认为我正在访问类属性时发生常见错误,而我正在使用局部变量或函数参数。

swift - 关于 [unowned self] 应该放在哪里的困惑

我有一个保留循环,所以我的viewcontroller的deinit不会被调用,我试图通过添加[unownedself]来解决这个问题,但我不太确定在我的案例中将unowned放在哪里:案例一classYADetailiViewController:UIViewController{varsubscription:Subscription?overridefuncviewDidLoad(){super.viewDidLoad()ifletquery=self.event.subscribeQuery(){self.subscription=Client.shared.subscribe

swift - 初始化参数中的 self

我想像这样在初始化参数中使用Self:classA{publicinit(finishBlock:((_operation:Self)->Void)?=nil){...}}我知道我可以在这个地方使用“A”,但我想实现这一点,如果某个类继承自A,那么它的初始化器将知道操作,因为它是类类型,而不仅仅是A。例如,如果我写道:classB:A{publicinit(finishBlock:((_operation:Self)->Void)?=nil){...}publicfuncfooOnlyInB(){}}然后我可以使用:letb=B{(operation)inoperation.fooOn

ios - 在 super.init 初始化 self 之前在属性访问 'self' 中使用 'frame'

我有这个代码importUIKitclassCardView:UIView{@IBOutletvarimageView:UIImageView!init(imageView:UIImageView){self.imageView=imageViewsuper.init(frame:CGRect(x:0,y:0,width:self.frame.size.width,height:self.frame.size.height))}requiredinit?(coderaDecoder:NSCoder){fatalError("init(coder:)hasnotbeenimplement