百度语音在Android9.0不能发音解决办法:
在 AndroidManifest.xml
<application>
下加入:
|
|
上主是我的牧者,我实在一无所缺
百度语音在Android9.0不能发音解决办法:
在 AndroidManifest.xml
<application>
下加入:
|
|
任务: 求数字的平方。
|
|
为了求5的四次方我们被迫创建变量 squaredOfFive — 高手可不喜欢被迫定义一个无用的变量。
|
|
任务:打印输出数组内所有的元素。
居然要定义这么多函数? 菜鸟能忍高手不能忍!
|
|
任务:打印 5 次 大雁塔
|
|
被迫定义了变量 i 来确保打印大雁塔5次
|
|
任务:计算圆的直径
上面我们创建了2个毫无关系的函数,可是直径和周长两者真的没有关系吗?
任务: 获取偶数。
|
|
这种for循环真是冗长,让人看的昏昏欲睡。
第一就是代理,这也是很常用的方式,特点是一对一的形式,而且逻辑结构非常清晰。实现起来较为简单:写协议 ,设置代理这个属性, 最好在你想通知代理做事情的方法中调用即可。当然这里面有一些细节,包括 ①协议定义时,请用关键字@required,和@optional来明确代理是否必须实现某些方法 ②代理的类型需用id类型,并写明要遵守的协议 ③就是在调用代理方法的时候需要判断代理是否实现该方法。
第二就是通知,通知的优点很明显,他是一对多的形式,而且可以在任意对象之间传递,不需要二者有联系,当然他的实现和代理相比较稍微绕一点,注册,发通知,收通知。这里面的注意点就是 ①对于系统没有定义的事件监听时需要自己发通知,这是你就需要定义一个key,字符串类型,这也是通知的一个弊端,你需要拷贝到收通知的对象,避免写错一个字母而无法收通知的尴尬 ②就是注册的通知中心需要手动移除,不然除了性能的问题还会有其他的问题出现,比如说一个控制器消失了之后还有因为某些事件而发出通知,造成不想要的结果。
第三就是block了,这是苹果后来才加入的,也是目前开发比较常用的一种方式,功能比较强大,但是在理解和使用上可能需要一段时间摸索和熟悉。他的最大特点就是回调,而且回调时可以传入参数,最重要的是,无论在哪调用,block的执行都会回到block创建的地方执行,而非调用的地方。而block本身可以封装一段代码,一段代码你懂的,很多人在初学时会被搞晕,甚至在block的声明上就纠结,其实很正常,多用就好。
如下面代码,我们定义了一个协议方法, 其结构就是protocol关键字+协议的名称 + : + NSObjectProtocol {},注意Swift中的自定义协议其本身必须遵循NSObjectProtocol协议
|
|
并且在OC中,我们一般会定义一个属性来保存代理如@property (nonatomic,weak)id< TextViewControllerDelegate > delegate;但是在Swift中我们依然要这样做,只不过写法变成了weak var delegate : TextViewControllerDelegate?,注意一定要加上weak关键字,避免循环引用问题.这是我的demo中的代码,回调一段字符串
|
|
然后就在别的控制器,设置那个控制器为该控制器的代理,去实现协议方法就可以了
具体实现:
YMNewfeatureViewController.swift
用户首次装载时应用:
在做移动端开发时,难免会用到tableview 来渲染列表数据,像这样:
实现也很简单,先贴出code: