• Swift中的struct和enums是值对象类型(当一个新的实例生成时只是值复制),不是引用类型,所以它们不会引起强引用闭环; 3.weak引用是可选的(optional),所以必须使用var修饰词,这样在释放时...

    1.使用关键词“weak”是为了避免强引用导致的闭环。当两个对象相互强引用对方时就会引起引用闭环,他们的引用计数永远都不会为零;

    2.仅当delegate是一个类时,使用weak关键词。Swift中的struct和enums是值对象类型(当一个新的实例生成时只是值复制),不是引用类型,所以它们不会引起强引用闭环;

    3.weak引用是可选的(optional),所以必须使用var修饰词,这样在释放时可以置为nil;

    4.父类对子类有强引用,从而不使用weak。但是当子类需要引用父类对象的时候,需要使用weak;

    5.当不想拥有一个类的引用时,使用weak,而不仅仅是子类引用父类对象。当两个非继承的类对象需要相互引用对方时,选择一个使用weak;

    6.建议delegate使用weak修饰,因为大多数情况,对象不需要拥有delegate。但是也有一些情况delegate是需要使用strong修饰,比如你在异步读取数据库时,可以在读取过程中保持delegate,在读取成功或者失败后,再设置delegate为nil;

    7.协议protocol既可以用在类中也可以用在非类类型中(比如struct,enums),当在类中使用,需要标记协议类型是class

    protocol MyClassDelegate: class {
        // ...
    }
    
    class SomeClass {
        weak var delegate: MyClassDelegate?
    }

    转载于:https://www.cnblogs.com/horo/p/7109433.html

    展开全文
  • 大部分情况下,这意味着在 Swift 语言,内存管理自动完成,不需要自己去考虑内存管理的事情。当实例不再被使用时,ARC会自动释放这些类的实例所占用的内存。 每一个实例有引用数,每次有别的实例引用它时,引用...
  • 一切都是为了iPadOS准备,什么是iPadOS请参考《SwiftUI iPadOS 开发入门,让我们了解一下什么是iPadOS》 这两个文件旨在按整体运行应用程序所需的内容以及将支持在后台运行的一个“实例”所需的内容进行拆分。...
  • swift中delegate的使用注意 2018-08-14 10:46:01
    swift中delegate的使用注意 原文连接:https://link.juejin.im/?target=http%3A%2F%2Fmarkmiao.com%2F2017%2F03%2F10%2Fswift%E4%B8%ADdelegate%E7%9A%84%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%2F delegate是iOS...
  • 本文简单介绍了使用Delegate方法的进行值的传递,改变上一个界面的字体大小和颜色首先创建一个导航视图:let viewC = ViewController(); let navigationC = UINavigationController.init(rootViewController: viewC)...
  • 如何理解swift中delegate 2017-08-04 14:58:40
    该设计模式通过定义一个封装(包含)delegate的protocol(协议)来实现,从而保证这个代理囊括所定义的功能。Delegation可用于响应特定操作,或者从外部源检索数据,而不需要知道该源的基础类型。(一)这里举一个...
  • 在A类里面声明一个ADelegate的代理,B类遵循并使用ADelegate定义的函数。 实现A.swift//创建协议 protocol ADelegate:NSObjectProtocol { //回调方法 传一个String类型的值 func delegateMethod(string:...
  • 前言:delegate的中文翻译就是委托。 个人认为委托是有三个角色共同完成的。 分别是:委托人、中介、任务执行。 看别人的博文是将delegate比作是老板的一个秘书的,委托人是老板,执行任务的技术员。 1. 中介...
  • swift中delegate与block的反向传值
  • swift中的代理声明和OC差不多。 使用关键字protocol 定义代理的名称在大括号里面写上代理要实现的方法,func 方法名(参数: 参数类型)->返回值类型 protocol CustomLayOutDelegate{  func CollectionCellSize...
  • IOS swift: Delegate and Protocol 2019-08-21 02:57:07
    本篇主要介绍UIView里的delegate 和 protocol的一个简单的example和如何去使用 首先我们先做一个简单的UIView,在ViewController里有一个去到DetailViewController的button,在DetailView里我们有两个Button,一个是...
  • 关于swiftdelegate和protocol 2019-05-22 20:24:05
    delegate:委托,代理 类有属性,方法,事件 delegate与事件有关 protocol:协议,与类相似,但是其中属性,方法,事件没有具体内容 当class遵守协议之后,需要实现这个协议的某一些函数。 delegate的使用 例如...
  • swift使用delegate和closure进行传值:类似oc的代理和block firstViewController.swift文件 // // firstViewController.swift // testPageControl // // Created by yinlinlin on 15/12/29. // C
  • 做过IOS开发的都应该知道TableView有两个属性,delegate和dataSource。这就是代理最好的体现,tableView在设计之初并不知道这个tableView将来会放在哪里,存储的是什么东西,这里数据源就起到了关键性作用:对于设计...
  • SWIFT -delegate 2019-05-17 14:09:24
    参考:https://www.cnblogs.com/jige/p/swift_delegate.html // // SecondVC.swift // import UIKit // protocol PassTextDelegate:class { func passTex(textString : String?) } class SecondVC: UIViewContr....
  • 下面介绍Swift的反向传值的两种方法,其实swift的方向传值和OC一样,也可以用通知等方式,这里只介绍两种 一、代理(delegate)传值: 基本步骤可以分6步: 1、代理声明 // 1、代理的声明 protocol ...
  • SwiftDelegate/闭包 2019-08-05 19:37:35
    Block 1.typealias ScenderBlock = (_ backString: String) -> Void 2.var block:ScenderBlock? 3.self.block?(textField1.text!) 4.在传值界面 vc.block = { backString in ... self.lab.text = backSt...
  • Swift Delegate 协议的使用 2018-09-28 15:52:30
    Swift Delegate 协议的使用   协议规定了用来实现某一特定功能所必需的方法和属性。 任意能够满足协议要求的类型被称为遵循(conform)这个协议。 类,结构体或枚举类型都可以遵循协议,并提供具体实现来完成协议...
  • 由于项目要开始转想 swift4.0了,说一下Delegateswift中使用方式。 @objc protocol AADelegate{  func okAction()  //必须方法  @objc optional func clickAction() //可选方法 }   weak...
  • 委托(delegate)是Cocoa的一个术语,表示将一个对象的部分功能转交给另一个对象。 比如对象A希望对象B知道将要发生或已经发生某件事情,对象A可以把对象B的引用存为一个实例变量。这个对象B称为委托。当事件发生时...
1 2 3 4 5 ... 20
收藏数 11,541
精华内容 4,616