草庐IT

self-referencing

全部标签

ios - Swift : property 'self.circle1' not initialized at super. 初始化调用出错?

我是编程新手,正在尝试用Swift编写一个井字游戏应用程序,但这个错误使我无法运行该应用程序:属性“self.circle1”未在super.init调用时初始化。该应用程序尚未完成,但我看不到现有代码中的错误所在。请再次彻底解释任何建议,因为我是初学者。谢谢!我的代码:importUIKitclassViewController:UIViewController{//Initializingallimgsasvariables:@IBOutletstrongvarcircle1:UIImageView@IBOutletstrongvarcircle2:UIImageView@IBOu

swift - Swift 闭包中的 `self`

我想在Swift闭包中理解self。例如-()->Void={[weakself]inguardlet`self`=selfelse{self.callMethod2()}self.callMethod3()}为什么我们在这里使用反引号?这是好的编程习惯吗?self是如何弱捕获到这里的? 最佳答案 Swift4.2最近采纳了一项将此添加到语言中的提案:guardletself=selfelse{return}所提出的解决方案需要允许使用可选绑定(bind)将self从弱引用升级为强引用。更多细节引用swiftevolutionpro

objective-c - 有没有办法显示不使用弱 self 的警告?

每隔几个月,我都会遇到同样的问题,即ViewController没有被释放,因为没有在block中使用weak-self。有什么方法可以让Xcode警告我吗?谢谢。 最佳答案 这可能有助于-Warc-retain-cycles此外,如果您在Xcode中选择分析而不是构建,这将为您提供有关代码中不良做法的更多信息,其中包括有关使用弱变量的信息。另一个层次是使用Infer,Facebook开源的iOS/Android静态分析器:www.fbinfer.com另请参阅:http://fuckingclangwarnings.com/对于其

swift - 什么是 objc_sync_exit(self)

我看到在UISearchBarDelegate方法textDidChange中使用了这个函数。我到处寻找任何文档,但无法提出任何建议。只是想知道是否有人可以阐明此功能的作用。objc_sync_exit(self) 最佳答案 当您编写同步代码以停止某项运行多次(Objective-C:“@synchronized”)时,它会在幕后转换为对objc_sync_enter()和objc_sync_exit()的调用。如果您看到有人直接使用这些函数,这表明他们不能使用普通的旧同步块(synchronizedblock)(或他们自己的Swi

ios - Swift- 错误 : Variable 'self.___' used before being initialized

我正在尝试在Playground中使用手势识别器,但遇到了一些问题。这是我的类(class):classfoo{varfooVarSwipe:AnyvarfooVarTap:Anyinit(){letgr=UISwipeGestureRecognizer(target:self,action:#selector(foo.bar))lettr=UITapGestureRecognizer(target:self,action:#selector(foo.tar))helloApple.addGestureRecognizer(gr)helloApple.addGestureRecogni

Swift:在初始化程序中多次调用 Self.init

这个让我难住了。我不明白为什么Swift提示self.init在这段代码中被多次调用:publicinit(body:String){letparser=Gravl.Parser()ifletnode=parser.parse(body){super.init(document:self,gravlNode:node)}else{//Swiftcomplainswiththementionederroronthisline(itdoesn'tmatterwhat"whatever"is):super.init(document:self,gravlNode:whatever)}}除非我

ios - Swift 函数范围 - 引用 self (意味着 "self as the enveloping function")

采用这个基本函数:funcsampleFunction(){print(self)}这里self指的是包含它的class实例,而不是-可能更有意义-包含它的function.如何获取对封装函数而不是其封装类实例的引用?理想情况下,我希望做这样的事情:funcsampleFunction(value:Int){print(selfAsEnvelopingSampleFunction,value)} 最佳答案 如果要打印函数名,可以使用__FUNCTION__print(__FUNCTION__)在您的print语句中,否则只需使用sa

ios - 自定义 UIView 初始化程序的便利初始化程序必须使用 self.init 错误进行委托(delegate)

我正在尝试为UIView创建自定义初始化方法,如下所示:convenienceinit(frame:CGRect,tutorProfileImageURL:String?){self.tutorProfileImageURL=tutorProfileImageURLsuper.init(frame:frame)}overrideinit(frame:CGRect){super.init(frame:frame)setup()}requiredinit?(coderaDecoder:NSCoder){super.init(coder:aDecoder)setup()}funcsetup(

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