关于[email protected]连线生成的属性系统自动解包问题

关于连线拖出来的属性后面默认带叹号和为什么我们一开始不需要给它赋值问题

@IBOutlet
weak
var display:
UILabel!

因为系统自动帮你初始化了,display是一个optional,并且在使用之前就赋了nil.对于optional后面一般不是问号吗?但是对于实际类型而言它们没有什么区别.它仍然是一个optional的值,其值在这里可能是一个UILabek类型.但是它们的用法完全是不一样的,这完全是编译器帮你把事做好了.但是我们把叹号改成问号,编译器就会报出一些错误提示
Swift Compiler Error Value of optinal type ‘UILabel?’ not unwrapped; did you mean to user ‘!’ or ‘?’ ? ,比如对于display.text 就会提示说该对象没有一个叫text的成员变量.就是说你不能给它发生text消息.当然你可以在用的时候对其进行解包,比如: 
display!.text
= digit 这中写法也是正确的.但是要在每次用的时候都有对其解包.所以还是表变态的该系统生成的方法.sdisplay没有在类最开始创建时初始化成nil.只有在xib被对应的viewController加载了.也就是连上线后,这个变量就会被设置并初始化,那么它在整个类中就是永远初始化过了.所以这些很早前就被设置过属性变量不一定要和自己写的属性一样在创建的时候初始化.并且它设置的时间非常早,之后一直保持着已设置状态.所以这虽然是一个optional类型,但它会自动对变量解包.在某种情况下,你需要在UI加载之前获取display,它会崩溃,因为它还没有解包.这个就叫做
unwrapped optional

时间: 2024-10-08 19:02:22

关于[email protected]连线生成的属性系统自动解包问题的相关文章

[email protected]初体验之前篇-回顾[email protected]创建项目的流程

模拟实际工作中的操作,假如新开启了一个vue项目,可以先看看上篇博文中的git操作,新建空仓库vue-demo,并拉取到本地,创建本地dev分支后 1. 全局安装vue-cli yarn global add vue-cli // 检查是否已安装成功 vue -V // 2.9.6 2. 使用vue init 创建项目,官方提供了6种模板,对于大多数人而言,工作中选择webpack模板 // 使用vue init 创建项目(.指当前目录) vue init webpack . ? Generat

19、属性赋值[email protected]加载外部配置文件

19.属性赋值[email protected]加载外部配置文件 加载外部配置文件的注解 19.1 [xml] 在原先的xml 中需要 导入context:property-placeholder 声明,然后使用${nickName}取值 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"

[email&#160;protected]、self及类的本质

让代码书写更加简便 --1-- 设置器和访问器 1.1 setter 1.2 getter --2-- 类的本质 2.1 类类型的对象 2.2 类的本质 2.3 如何获取类对象 2.4 类对象的使用 2.5 类对象的存储 --3-- SEL类型 3.1 SEL --4-- @property关键字 4.1 基本概念 4.2 @property用法 4.3 @property使用注意事项 --5-- @synthesize关键字 5.1 @synthesize用法 5.2 @synthesize使

[email&#160;protected]动态代理-类加载器

一.测试单元     概述:用于测试JAVA代码的工具类,已内置在Eclipse中;     格式:         1.在方法的上面添加@Test;         2.对被测试的方法的要求:权限-public;返回值-void;参数-空参         [email protected]:在@Test标注的方法前执行,可以用于初始化;           @After:在@Test标注的方法后执行,可以用于释放资源; 二.注解     概述:java的一种数据类型,和类/接口在同一级别  

git笔记[email&#160;protected]

之前安装了git,用了不久就升级系统了,发现又忘记了步骤,虽然网上有很多教程,但寻找需要浪费太多的时间,由于github连接比较慢,所以使用了开源中国的托管http://git.oschina.net/,安装流程写在oneNote里. 1.首先需要安装git<a href="http://git-scm.com/download/">Git官网</a>,安装好之后会又Git GUI和Git Bash,就用命令行吧~~ 打开Git Bash,简单的配置下: 先建立

无法解析的外部符号 [email&#160;protected]

无法解析的外部符号 [email protected] Ctrl+F7 编译的时候没有错误,而F6生成解决方案的时候出现如下两个错误: 1:error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 ___tmainCRTStartup 中被引用        MSVCRTD.lib 2: error LNK1120: 1 个无法解析的外部命令 出这个错误可能有以下几个原因: 一.新建项目是控制台应用程序而程序通过的是WinMian(及windows入口函

[email&#160;protected]和@synthesize

@porperty @porperty是一个编译器指令 在Xocde4.4之前, 可以使用@porperty来代替getter/setter方法的声明, 也就是说我们只需要写上@porperty就不用写getter/setter方法的声明 2.编译器只要看到@property,就知道我们要生成某一个属性的getter/setter方法的声明 @propertyde格式 @property数据类型变量名 property增强 从Xcode4.4以后,对@property进行了增强, 以后只要利用一

1045-Access denied for user&#39;[email&#160;protected]&#39;

异常处理之 1045-Access denied for user'[email protected]' 此处使用工具为mysql.Navicat for MySQL.创建连接以后,打开连接时候产生异常. 1045-Access denied for user'[email protected]'.产生这种情况,通常有两种类型.   解决办法,将其分为以下两种情况:    一.如果使用者知道自己的用户名和密码. 1.1045-Access denied for user'[email prote

使用Mac OS X 终端连接[email&#160;protected]

环境准备: Xcode(直接AppStore下载安装) Git(可以在http://code.google.com/p/git-osx-installer/下载git安装程序,或者在https://www.kernel.org/pub/software/scm/git/下载源码安装.) 源码安装过程: 解压源码包 tar xjvf git-1.8.3.tar.bz2 编译 cd git-1.8.3 ./configure --prefix=/usr/local make 安装 sudo make