var audioRecorder:AVAudioRecorder!
var audioPlayer:AVAudioPlayer!
let audioSession = AVAudioSession.sharedInstance()
这段代码中 AVAudioRecorder AVAudioPlayer AVAduioSeesion 都是类吧,前两行是实例化吗?如果不是为什么不写成 audioRecorder = AVAudioRecorder() ?最后为什么要加感叹号呢?难道 audioRecorder 还有可能为 nil ?
1
luxy 2019-09-24 01:32:04 +08:00 via iPhone
前两行是变量声明,!表明是 Optional 可选类型
|
4
kingcos 2019-09-24 02:04:49 +08:00 via iPhone
@hard2reg 因为你没有初始化,所以只是声明,初始化,或者说实例化,你要调用构造方法,不然怎么分配内存空间,初始化变量什么的呢?
|
5
kingcos 2019-09-24 02:07:38 +08:00 via iPhone 1
感叹号这里意思是,由你保证这两个变量是非空的,如果在某一阶段被赋值了 nil,那下次你在用他的时候就直接崩了
|
6
AwayEM 2019-09-24 02:09:08 +08:00 via iPhone
学啥子不好学 swift
|
8
hard2reg OP |
9
NUKZ 2019-09-24 09:16:20 +08:00 via iPhone 1
前两行声明,可以理解为:你买个一个房子,房本(合同)上写着你的名字,但是开发商还没有盖好。等盖好了(初始化完成),你住进去,房子的才真实的存在,你可以使用他的属性,如:睡觉,做饭,看电视。至于为什么要分!,?。你可以这么理解:感叹号表示你只有一套房子,如果你把它卖了(置为 nil ),你就没有地方睡觉了。问号表示你有好几套房子,这套房子卖了,你还在其他房子可以住。新手这么理解,真正含义,等你多撸撸代码就懂了。回答不好,请各位老哥轻点喷。
|
11
CommandZi 2019-09-24 09:39:00 +08:00
一般不会在声明的时候加感叹号,你搜一些新一点的代码看吧,你贴的这个编写的人显然对 Swift 中 Optional 类型不是很了解
|
12
lllllliu 2019-09-24 09:47:59 +08:00 1
var audioRecorder:AVAudioRecorder!
var audioPlayer:AVAudioPlayer! 前面这两行 冒号后面的是类型,加!相当于隐式的让比这两个变量在以后操作的时候都默认不是 nil,一旦没有赋值就直接报错。因为在做 audio 相关的时候这两个变量必须存在,也是省下了下文进行操作的时候再加!的操作而已呀。 let audioSession = AVAudioSession.sharedInstance() 这个就是获取音频会话的单利。 |
13
lllllliu 2019-09-24 09:51:35 +08:00
还有就是强制解析的事,用!可以直接用。
|
14
0x11901 2019-09-24 11:00:44 +08:00
很多年前大家还在写 c 的时候,喜欢把函数中用到的所有的变量在函数开始的时候先声明一下。后来这种做法渐渐被遗弃了,不过还是有人会这么写吧……
|