文档章节

Swift中?和!的区别

evil_01
 evil_01
发布于 2016/05/19 14:11
字数 475
阅读 78
收藏 0
点赞 2
评论 0

1.常量和变量

Swift语言中是用let来定义常量,并且要初始化。var来定义变量,在let或者var后面申明类型,冒号+空格,然后再加上类型名称

2.optional(可选)变量 可选变量用于处理值缺失的情况,有点类似于OC中的nil,可以用于任何类型上,不仅仅是类,不过更加安全。Swift是类型安全的一门语言,可以很少申明类型 Swift和Objective-C中nil的区别 1)OC中,nil是一个指向不存在对象的指针; 2)Swift中,nil不是指针,它是一个确定的值,用于表示值缺失。任何类型的可选状态都可以设置为nil,不只是对象类型;

3.深入了解Optional变量 Optional其实就是一个enum,里面有None和Some类型。nil就是Optional.None,非nil就是Optional.Some,通过Some(T)包装原始值,所以在是用Optional的时候要进行拆包。 声明一个可选类型的时候要在类型后面加上? 如:var str : String? var strValue: String? 意思不是“我声明了一个Optional的String值”,而是我声明了一个Optional类型值。 对一个可选类型的值,需要进行拆包才不会报错。 拆包有两种方式,如下: 1)Optional Binding 如: ``` if let str = strValue { let hashValue = str.hashValue }

2)通过! str!
对于会在viewDidLoad进行初始化的变量,可以直接定义为var str :String!叫做Implicitly Unwrapped Optionals,称为隐式拆包,在进行操作的时候也需要添加!进行拆包。

?的使用场景:
1)声明Optional值变量
2)在对Optional值操作中,用来判断是否能响应后面的操作

!的使用场景:
1)强制对Optional值进行拆包
2)声明隐式拆包变量,一般用于类中的属性

本文转载自:http://blog.csdn.net/hnuzengchao/article/details/50059887

共有 人打赏支持
evil_01
粉丝 8
博文 43
码字总数 27980
作品 0
卢湾
架构师
[swift]-字符串和oc字符串的对比使用

swift中字符串和oc字符串的区别: > 1:swift字符串的类型是String,oc 字符串的类型是NSString > 2:swift字符串的写法是"123",oc字符串的写法是@"123" swfit中字符串的类型为什么是String ,它...

XJDomain
2016/07/31
18
0
swift的数据类型到底是什么尿性 (说点别人没讲明白的)

文初: 如果你对swift的些许了解只局限在 swift中的类型使用struct取代class 多了Optional可选类型 这些最基础的认知,而对其底层设计的原因和原理了解甚少,那这篇文章会给你新的视角,让你...

CoderDancer
2017/08/22
0
0
Swift 个人学习笔记 - 08: 类和结构体

本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的...

amc
2017/03/10
0
0
Swift面向协议编程总结

Swift面向协议编程 所谓面向协议编程,就是使用声明方法,然后使用提供默认的实现,只要需要使用到该方法的类遵循该,就可以直接使用该的实现。 代码复用 继承:会带来耦合。 继承的代价:这...

一蓑烟羽
2017/11/13
0
0
swift中KVO和属性观察器

开篇提醒:OC中的KVO及其KVO的基础知识可参见:深入runtime探究KVO Swift中,原本没有KVO模式,为何这么说,请看下文: KVO本质上是基于的动态分发机制,通过来监听的值。 OC能够实现监听因为...

CoderDancer
2017/01/13
0
0
Swift笔记字符串

1.字符串的基本使用 OC与Swift中字符串的区别 OC中字符串类型是NSString,Swift中字符串类型是String OC字符串用@"",Swift用"" 使用String的原因 String 是一个结构体,性能更高(保存的直接是值...

大基本功
2017/12/17
0
0
iOS集成Fabric & Crashlytics (3)

上一篇我们了解了如何使用Crashlytics 进行数据统计,这一篇我们主要研究一下如何向Fabric上面上传并查阅自定义的Log. 其实自定义log很简单. 但是OC 和Swift 是稍微有些区别的. OC: 如图示这...

Lucky闪闪星
01/09
0
0
Swift-001-Swift简介及基础语法

1.Swift简介 2014年WWDC 发布的新开发语言,可与OC共同运行于Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。 swift2.0之后的语法则趋于稳定,2017年发布的swift4.0虽有改动,但也只是...

胡锦涛_Steven
07/16
0
0
字符串的介绍

字符串的介绍 字符串在任何的开发中使用都是非常频繁的 OC和Swift中字符串的区别 在OC中字符串类型时NSString,在Swift中字符串类型是String OC中字符串@"",Swift中字符串"" 使用 的原因 是一...

别情花如依丶
2016/12/21
2
0
swift 中的 AnyObject 和 Any

诞生 swift 作为新起步的语言,必然抛不掉一些历史遗留包袱。用过 Objective-C 的同学肯定知道有一种叫做 id 的类型。他可以表示任意类的实例,编译器不会对其类型声明的变量进行检查。在用 ...

Inlight先森
2017/12/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

matplotlib 保存图片时的参数

简单绘图 import matplotlib.pyplot as pltplt.plot(range(10)) 保存为csv格式,放大后依然很清晰 plt.savefig('t1.svg') 普通保存放大后会有点模糊文件大小20多k plt.savefig('t5.p...

阿豪boy
7分钟前
0
0
java 8 复合Lambda 表达式

comparator 比较器复合 //排序Comparator.comparing(Apple::getWeight);List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c")) .collect(......

Canaan_
昨天
0
0
nginx负载均衡

一、nginx 负载均衡 拓扑图: 主机信息: 1、负载均衡器1(lb1):192.168.10.205 RHEL7.5 2、负载均衡器2(lb2):192.168.10.206 RHEL7.5 3、web服务器1(web01):192.168.10.207 Centos...

人在艹木中
昨天
0
0
做了一个小网站

做了一个小网站 www.kanxs123.com

叶落花开
昨天
0
0
继社会佩奇之后,又尝试了可爱的蓝胖子,有趣 Python

#哆啦A梦# !/usr/bin/env python3# -*- coding: utf-8 -*-# @Author: dong dong# @Env: python 3.6from turtle import *# 无轨迹跳跃def my_goto(x, y): penup(...

Py爱好
昨天
0
0
shell及python脚本方式登录服务器

一、问题 在工作过程中,经常会遇见需要登录服务器,并且因为安全的原因,需要使用交互的方式登录,而且shell、python在工作中也经常用到,并且可以提供交互的功能。都是利用了expect、spawn...

yangjianzhou
昨天
0
0
upstream sent too big header while reading...

nginx 报错:1736 upstream sent too big header while reading response header from upstream 1. 一般处理 location ~ \.php$ { #增加下面两句 fastcgi_buffer_size 128k; ......

dubox
昨天
0
0
Python解析配置文件模块:ConfigPhaser

import configparser as pa# [SectionA]# a = aa# b = bb# c = cc# [SectionB]# optionint = 1# optionfloat = 1.1# optionstring = string#https://www.cnblogs.com/a......

易野
昨天
0
0
Java基础——面向对象

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 Object的方法: clone() Object 克隆 to Strin...

凯哥学堂
昨天
0
0
rabbitmq学习记录(八)消息发布确认机制

RabbitMQ服务器崩了导致的消息数据丢失,已经持久化的消息数据我们可以通过消息持久化来预防。但是,如果消息从生产者发送到vhosts过程中出现了问题,持久化消息数据的方案就无效了。 Rabbit...

人觉非常君
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部