草庐IT

self-destruction

全部标签

swift - 如何实现返回协变 Selfs 的协议(protocol)方法?

错误:非最终类(“Class”)无法满足协议(protocol)“Protocol”要求“instance”,因为它在非参数、非结果类型位置使用“Self”protocolProtocol{varinstance:Self{get}}classClass:Protocol{varinstance:Class{returnSubclass()}}classSubclass:Class{}以下是我在C#中表达我想要的内容的方式。(据我所知,C#没有办法强制通用参数“Self”实际上是我们从Swift中知道的Self,但它作为文档足以让我做正确的事情。)interfaceProtocolwh

Swift - didSet 中的弱 self

我很少看到有人在didSet中使用[weakself]。这是有原因的吗?我尝试在变量的didSet中使用[weakself]:vardata:Dictionary!{//[1]didSet{[2]self?.layoutSubviews()}}无论我将[weakself]in放在[1]还是[2],我仍然得到错误:Useofunresolvedidentifierweak这是为什么呢?将[weakself]用于didSet是否违法?问候, 最佳答案 didSet不是闭包,您不能对它使用闭包语法。没有理由在那里使用weakself。di

Swift - 在关闭时强烈捕获 self 后期待泄漏

谁能解释一下为什么这不会泄漏?我在closure中捕获self所以我会有两个指向彼此的强指针,因此deinit消息应该'永远不会为Person对象调用。首先,这是我的类(class)Person:classPerson{varname:Stringinit(name:String){self.name=name}deinit{print("\(name)isbeingdeinitialized")}}这是我的ViewController的实现:classViewController:UIViewController{varjohn:Person?funccallClosureFunct

ios - 如何使用其中的 UIStackView 进行 self 调整 UITableViewCell

我无法通过其中的UIStackView实现self调整大小的UITableViewCell。对于UITableViewCell我正在做这样的事情:在代码上我这样做:overridefuncviewDidLoad(){super.viewDidLoad()self.tableView.estimatedRowHeight=80}但是当我运行应用程序时,UITableViewCell不会调整大小:在UITableViewCell中使用UIStackView进行self调整时,我错过了什么? 最佳答案 单元格大小调整工作正常。您的问题是您

ios - self.variable 和 _variable 的区别,关于 KVO

这个问题在这里已经有了答案:What'sthedifferencebetween_variable&self.variableinObjective-C?[duplicate](1个回答)关闭7年前。第一张图是用self.name改的,第二张图是用_name改的,应该是一样的结果,但是第二张什么都不输出,为什么?这是代码#import"ViewController.h"@interfacekvo:NSObject@property(nonatomic,strong)NSString*name;@end@implementationkvo-(void)change{_name=@"b";

ios - 属性 'self.title' 未在快速调用 super.init 时初始化

这个问题在这里已经有了答案:ErrorinSwiftclass:Propertynotinitializedatsuper.initcall(12个答案)关闭6年前。我有一个派生自UIView的类,但我初始化它时总是显示错误“Property'self.title'notinitializedatsuper.initcallinswift”这是我的代码classA:UIView{vartitle:StringvarrecordUrl:Stringvarcontent:Stringrequiredinit?(coderaDecoder:NSCoder){fatalError("init(

swift - 为什么 Swift 闭包不捕获 self ?

我正在使用XcodePlayground测试快速关闭。这是我的代码:importUIKitclassA{varclosure:()->()={}varname:String="A"init(){self.closure={self.name=self.name+"Plus"}}deinit{print(name+"isdeinit")}}vara:A?a=A()a=nil正如预期的那样,a由闭包自包含,因此a永远不会被释放。但是,当我在最后一行之前添加这一行时:a?.closure={a?.name="ttt"}然后,我在输出窗口中发现“Aisdeinit”,这意味着a被释放了。为什么

swift - 什么时候我们不应该使用 [weak self] 和 [unowned self]?

我在StackOverflow上阅读了一些关于何时应该使用[weakself]的讨论。或[unownedself]在闭包中。但是,在某些情况下我们不必使用两者,因为当我们明确使用self时Swift不会显示任何错误或警告。在闭包内。例如,我们应该使用weak吗?或unowned在这里?UIView.animate(withDuration:0.3){self.view.alpha=0.0} 最佳答案 如果您的闭包会导致强引用循环,则需要使用[weakself]或[unownedself]。如果您将闭包分配到self的属性并且您引用s

swift - WKNavigationDelegate 仅在设置为 self 时有效

我正在编写一个Swift混合应用程序,我需要能够知道我的WKWebView何时完成请求加载。我正在尝试使用WKNavigationDelegate来实现这一点。但是,我可以让事件触发的唯一方法是如果我这样设置它:webView.navigationDelegate=self问题是我有一些我想要与我的请求相关联的数据,所以我创建了一个实现WKNavigationDelegate的自定义类,如下所示:classMyNavigationDelegate:NSObject,WKNavigationDelegate{init(...){//setlocalvariableswithpasseda

xcode - 在 Swift 中,self 的两种不同用法有什么区别?

在这个用于表格单元格的SwiftXcode6.0.1示例中,.self用作后缀(不记得以前看到过self像那样使用)和前缀self。(当然无处不在),试图理解它的真正含义。//RegistertheUITableViewCellclasswiththetableViewself.tableView.registerClass(UITableViewCell.self,forCellReuseIdentifier:self.cellIdentifier) 最佳答案 您第一次使用self作为前缀是对包含当前正在调用的方法的类的实例的引用