swift中? ! weak unowned的跟人理解

?相当于给属性套上一层包,即为一个Optional值,而Optional有None和Some两个值,该属性在定义时未初始化结果就是swift自动初始化为nil值(就是Optional中的None,本质上是有值的),在使用过程中当该属性为nil时其实其值为.None而进行判断;秉着严谨的态度我们应该在使用前进行 if value {}的判断;而!是相对于隐式拆包,在调用过程都会默认的添加上!;

SO:在控制器中我们已确定添加的控件在viewDidLoad中初始化,且基本不会在生命周期内销毁,所以考虑都用!  而相对的一些常变的string,cgfloat类型的属性,在周期内可能为空,所以用?

作用:属性中?是为了避免为nil而crash,而!避免重复判断,高效而简洁

时间: 2024-08-29 06:20:33

swift中? ! weak unowned的跟人理解的相关文章

Swift中的Weak Strong Dance

亲爱的博客园的关注着博主文章的朋友们告诉你们一个很不幸的消息哦, 这篇文章将会是博主在博客园发表的最后一篇文章咯, 因为之后的文章博主只会发布到这里哦 http://daiweilai.github.io/ 新博客排版布局更好,阅读体验更佳,欢迎吐槽.留言.订阅哟 马上又要过年了,诶,再也不能像当初那样无耻地逗利是了(我们广东的方言讨红包的意思) 图1 图2 看来今年没利了 谁让哥已经工作了呢. 公司今年的开发任务算是完结了,苹果又极不负(hǎo)责(yàng)任(de)地放圣诞不审核了,所以这

如何理解Swift中Optional的 ! 和 ?

很多人在刚上手swift时对于Optional中 '!' 和 '?' 的使用十分不理解,接下来我会谈一谈自己对于这两个符号的使用方式的理解. 先来说说Optional的概念,以方便之后的理解.来看一下下面的代码: var a : String = nil // 编译错误,String类型不能为nilvar b : String = "Hello!"12Swift 中的普通类型不再能设为nil.那如何表示这个值不存在呢?所以引进了Optional的概念:代表 nil 或某个具体的值.例如

[翻译]理解Swift中的Optional

原文出处:Understanding Optionals in Swift 苹果新的Swift编程语言带来了一些新的技巧,能使软件开发比以往更方便.更安全.然而,一个很有力的特性Optional,在你第一次使用时可能会感到困惑.Optionals将会在编译阶段检查哪些值为nil.通过这种方式,你可以更好的保证应用程序交付在用户手里是可运行的.在Swift中,Optionals也提供了一些接口用来和遗留的Objective-C代码之间交互. 初试Optional 让我们在XCode中新建一个叫做s

swift官方文档中的函数闭包是怎么理解的?

官方文档中的16页: numbers.map({ (number: Int) -> Int in let result = 3 * number return result }) 不知道这个怎么用,更不知道它所说的要写个把奇数改成0的方法. swift官方文档中的函数闭包是怎么理解的?

Swift 中的基础语法(二)

1.Swift 中的函数 /// 函数的定义 /// /// - Parameters: /// - x: 形参 /// - y: 形参 /// - Returns: 返回值 func sum(x: Int, y: Int) -> Int { return x + y } print(sum(x: 10, y: 20))   /* 外部参数就是在形参前面加了一个字 外部参数不会影响函数内部的细节 外部参数会让外部调用看起来更加直观 外部参数如果使用了'_',在外部调用函数时,会忽略形参的名字 &qu

Swift中编写单例的正确方式

Swift中编写单例的正确方式 2015-12-07 10:23 编辑: yunpeng.hu 分类:Swift 来源:CocoaChina翻译活动 14 10647 Objective-CSwift单例 招聘信息: Cocos2d-x 工程师 cocos2dx手游客户端主程 wp开发 iOS开发工程师 iOS软件工程师 iOS研发工程师 iOS讲师 iOS开发工程师 iOS高级开发工程师 iOS 高级软件工程师 iOS高级开发工程师 本文由CocoaChina译者leon(社区ID)翻译自kr

浅谈swift中的内存管理

Swift使用自动引用计数(ARC(Automatic Reference Count))来管理应用程序的内存使用.这表示内存管理已经是Swift的一部分,在大多数情况下,你并不需要考虑内存的管理.当实例并不再被需要时,ARC会自动释放这些实例所使用的内存. 内存管理:针对的是实例的内存占用的管理(放在堆里面) 实例:1:由class类型构建的实例,2:闭包对象 下面我们来写一个实例来证明一下 class Person { var name: String init(name: String )

swift中闭包 OC中Block 解决循环引用

OC 中 全局宏定义 #define WS(weakSelf)  __weak __typeof(&*self)weakSelf = self; 用法如下: WS(weakself) [self.tableView addHeaderWithCallback:^{ [weakself requestMemberList]; }]; swift 在比闭包 中使用 weakSelf weak var weakSelf = self demo4 {     // 使用?的好处 就是一旦 self 被释

Swift中的延迟加载(懒加载)

Swift方式的延迟加载 而在Swift中,你只需一行代码即可实现此机制: lazy var players = String[]() 简单.简洁,直入主题. 但你得记住,你必须使用var关键字来定义延迟加载的属性,不能使用let关键字,因为常量必须在实例构建时赋值. 如果你想给延迟加载加上一些逻辑处理,Swift允许你在属性后面定义一个闭包调用(闭包的返回值会作为属性的默认值): lazy var players: String[] = { var temporaryPlayers = Str