草庐IT

automatic-ref-counting

全部标签

swift - ARC 如何处理强制解包实例

我正在尝试了解ARC的确切工作原理,所以我阅读了SwiftARCdocumentation我遵循了他们在文档中使用playground提供的示例:classPerson{letname:Stringweakvarapartment:Apartment?init(name:String){self.name=name}deinit{print("\(name)isbeingdeinitialized")}}classApartment{letunit:Stringweakvartenant:Person?init(unit:String){self.unit=unit}deinit{pr

swift - 方法闭包是否在 swift 中保留实例?

在swift中,我可以使用实例方法作为闭包,例如,将方法分配给回调self.someView.someCallback=self.doSomething那么,self.doSomething中是否强烈引用了self?上面的行是否创建了一个引用循环? 最佳答案 根据您的代码片段,有两种可能的情况:如果doSomething是self的实例方法,那么,是的,该行建立了一个强引用。请记住ClosuresareReferenceTypes.您可以很容易地确认这一点,并且很容易根据经验确认。考虑:classViewController:UIV

ios - Swift addSubview() 在使用 init 创建的 View 上(重复 :count) doesn't work

这是一个使用init(repeating:count)创建4个subview的ViewController。在viewDidLoad中,我将它们添加为subview并设置它们的框架。当我运行应用程序时,只添加了最后一个View。classViewController:UIViewController{letsubviews=[UIView].init(repeating:UIView(),count:4)overridefuncviewDidLoad(){super.viewDidLoad()foriin0..这是相同的代码,除了我使用的不是init(repeating:count)关

嵌套结构类型的 Swift 数组 (count, repeatedValue)

Swift相对较新,并且在最简单的事情上苦苦挣扎。我希望预先分配一组设置为默认值的结构。只要该结构没有嵌套在另一种类型中,它就可以工作。有任何想法吗?这是一个简化的例子:structPlainStruct{varyo:Float=0.0}classWrapperClass{structNestedStruct{varyo:Float=0.0}}//Worksjustfinevara=[PlainStruct](count:2,repeatedValue:PlainStruct())//Error-Cannotcallvalueofnon-functiontype'[WrapperCla

ios - `UnsafeMutablePointer.initialize()`到底是做什么的?

以下是我的猜测。请大家指出我理解错误的部分。如果我有一个类,其中一个实例占用128位,叫做Class128Bits.我的程序在64位计算机上运行。首先,我调用letpointer=UnsafeMutablePointer.allocate(capacity:2)内存布局应该是这样的:000-063064bitschaos064-127064bitschaos128-255128bitschaos256-383128bitschaos如果我调用pointer.pointee=aClass128Bits,它崩溃了,因为前两个网格中的指针还没有被初始化。访问它们指向的内容会导致不可预测的结果

swift - 如何使用 ARC 在 Swift 中手动保留?

我在iOS应用程序中使用带有ARC的Swift3,我想手动保留一个对象。我试过object.retain()但Xcode说它在ARC模式下不可用。有没有其他方法可以做到这一点,告诉Xcode我知道我在做什么?长版:我有一个LocationTracker类,它将自己注册为CLLocationManager的委托(delegate)。当用户的位置发生变化时,它会更新一个名为location的静态变量。我的代码中需要位置的其他部分可以访问此静态变量,而无需或不需要引用LocationTracker实例。此设计的问题是委托(delegate)未保留,因此在CLLocationManager向其

swift - 可选的无主引用与 Swift 5.0 中的弱引用

这在Swift5.0中是允许的:classPerson{unownedvarchild:Person?}这由thisreleasenotes支持:unownedandunowned(unsafe)variablesnowsupportOptionaltypes.(47326769)我完全理解weak和unowned在Swift4.2和之前的版本中的区别。但是,我不确定为什么Apple决定将unowned设为optional类型。即使在docs(这是Swift5.0的文档)这个实现的“提案”(我什至在哪里可以找到以添加可选的无主引用为动机的提案?)没有更新,因为它说:Anunownedr

ios - 对成员 'count' 的模糊引用

当我将当前的Xcode(v7.0.1)项目迁移到Xcode7.1.1时出现以下错误对成员“计数”的引用不明确不能下标“数组”类型的值知道如何解决上述错误吗?我的代码如下vararrOfRewardDetail:Array=[Dictionary]()functableView(tableView:UITableView,numberOfRowsInSectionsection:Int)->Int{returnarrOfRewardDetail.count//Ambiguousreferencetomember'count'}ifself.arrOfRewardDetail[indexP

ios - ARC 在解除分配之前是否将其引用类型实例属性设置为 nil?

我在阅读this时想到了这个问题.我的问题引用下图:一旦john设置为nil,Person实例将不再具有任何强引用,因此将被释放。但是Apartment有两个强引用,其中一个是Person实例上的属性,该实例很快就会被释放。我相信,这个强引用在解除分配后会继续保留,并且代码无法访问。因此,将unit14A设置为nil只会删除对Apartment实例的一个强引用,它不应被释放,因为本来会有一个由于上述案例,更具引用性。但是,正如文档所说,Apartment实例很快就被释放了。对我来说,这只有在Person实例释放时才会发生,它通过删除强引用将其apartment属性设置为nil在Apar

vue3警告Extraneous non-emits event listeners (XXX) were passed to component but could not be automatic

vue3警告Extraneousnon-emitseventlisteners(selectMeth)werepassedtocomponentbutcouldnotbeautomaticallyinheritedbecausecomponentrendersfragmentortextrootnodes.Ifthelistenerisintendedtobeacomponentcustomeventlisteneronly,declareitusingthe“emits”option.之所以出现这个警告,是因为在子组件向父组件发送自定义事件的时候,没有使用“emits”选项声明它。这里使用两