本文是 WWDC 2018 Session 225 读后感,其视频及配套 PDF文稿 地址如下 A Tour Of UICollectionView。
这篇文章难度不大,由易到难,逐层深入,是一篇很好的 Session。全文总计约2500字,通读全文花费时间大约15分钟。
一个人,要学会自我教育
本文是 WWDC 2018 Session 225 读后感,其视频及配套 PDF文稿 地址如下 A Tour Of UICollectionView。
这篇文章难度不大,由易到难,逐层深入,是一篇很好的 Session。全文总计约2500字,通读全文花费时间大约15分钟。
这篇短文主要针对我在本周一和周二所经历的两家公司面试,做简短的总结。
上周我在智联招聘上简单的更新了一下自己的简历。不承想有多家公司邀请进行面试。本着检测自身技术水平,同时了解当前市场的想法,我接受了几家。上午有时间就简单的总结一下,前两家的一个面试过程,以及自己的一些心得感悟。
为了简化开发流程,提升工作效率,收集了一些平时常用的宏定义,今后会不定期更新
1 | //NavBar高度 |
原翻译者:智多芯
本人负责翻译、校对。
Apple 公司在 WWDC 2017 发布了几个令开发者感到兴奋的框架和 API,而在这些新框架中最受欢迎的绝对非 Core ML 莫属了。开发者可以通过 Core ML 框架将机器学习模型集成到应用程序中,该框架最大的优点是使用它并不需要开发者具备额外的神经网络或机器学习知识。Core ML 框架的另一个特点是,只要开发者将已经训练好的数据模型转换成了 Core ML 模型即可使用。为了演示,本文将直接使用 Apple 开发者网站上提供的一个 Core ML 模型。闲话少说,下面开始学习 Core ML。
注:本文要求使用 Xcode 9 beta 编写代码,还需要一个安装了 iOS 11 beta 的设备(译者注:也可使用 iOS 模拟器)用于测试文中实现的功能。虽然 Xcode 9 beta 同时支持 Swift 3.2 和 4.0,但文中所有的代码都使用了 Swift 4.0 编写。
Core ML 使得开发者能够将各种各样的机器学习模型集成到应用程序中。它不仅仅支持超过 30 层的深度学习网络(extensive deep learning with over 30 layer types),它还支持如树集成、支持向量机和广义线性模型等标准模型。Core ML 基于像 Metal 和 Accelerate 这样的底层技术,因此它能够无缝地充分利用 CPU 和 GPU 以最大化性能和效率。机器学习模型可直接运行在设备上,这样一来,被分析的数据就不必离开设备了。
Core ML 是今年在 WWDC 上随着 iOS 11 发布的一个全新的机器学习框架。通过 Core ML,开发者可以直接将机器学习模型集成到应用程序中。那么什么是机器学习呢?简单地说,机器学习是赋予计算机学习能力的应用,而不用明确地对它编程。一个训练好的模型就是结合机器学习算法对一些数据集进行训练的结果。
概念性的东西我们不讲了,我们都知道集合类的拷贝比较特殊,对集合类进行
Deep Copy
其实并不是完整的深拷贝,只是拷贝了外面的容器,里面的指针并没有被拷贝。道理大家都懂,可平时用的少,前几天我就栽了个跟头,特此记录一下。
网上有现成的解决方案,特此解读
mutableCopy
Copy
的需要进行特殊处理,例如 UIImage
在2017的WWDC
,苹果终于发布了众多开发者期待已久的系统级框架 CoreNFC
。可能你对于NFC
是什么并不是很了解,简而言之,NFC
(近场通信)就是当两台硬件设备相距4cm
以内时可以实现互相通信。NFC
在商业上的应用是把NFC
芯片集成到各类卡片中,极大的加强安全性。目前 CoreNFC
只支持一种格式:NFC Data Exchange Format
,简称NDEF
(常被用于平板电脑和智能手机中)。
Obj-C
之所以被称之为动态语言,完全是因为Runtime
库,Runtime
库是由C语言
和汇编语言
所写的,它在C语言
的基础上,为Obj-C
增加了面向对象的特征。同时借鉴SmallTalk
增加了消息转发。说透彻了就是我们所写的所有Obj-C
代码,都会通过Runtime库
转换为C语言
的代码。针对这么一个大家无时不刻都在使用的类库,是有必要深入了解一下的。
之所以开篇将一些数据的结构组成以及常用的名词解释,是为了大家在后续的过程中不会懵逼,咱们也不着急,那就一步步,踏踏实实的看。
我们通常所说的 Class,实际上是指向 objc_class 结构体的指针,objc_class在 objc_class里定义如下:
1 | struct objc_class { |
KVO
类似于观察者模式,我们利用简单的代码来了解什么是KVO
。
1 | // 注册一个Person类 |
我们在ViewController
中引入头文件,并创建两个全局的属性。我们希望Person
作为Dog
的观察者,当Dog
的name
属性发生变化的时候,Person
可以第一时间知道。这时我们就可以运用KVO
的技术。
1 | Person *p = [Person new]; |
关于KVC
和KVO
,我之前的总结文章有写过,但是实际上我在平日工作里,KVC
和KVO
使用的相对较少,不是KVC
和KVO
的功能不够强大,这实际上和项目的架构有比较大的关系,以前的我对于KVC
和KVO
的使用也是趋于表面,没有探究其内部真正的实现原理和进阶用法,这次总结正好给了我很好的学习机会,在此深入的总结一下KVC
和KVO
吧。
KVC,即是指 NSKeyValueCoding,一个非正式的 Protocol,提供一种机制来间接访问对象的属性。KVO 就是基于 KVC 实现的关键技术之一。
Objective-C
中KVC
的定义是对NSObject
的扩展来实现的。所以对于所有继承了NSObject
在类型,都可以使用KVC
,下面是KVC
最为重要的四个方法
1 | - (nullable id)valueForKey:(NSString *)key; //直接通过Key来取值 |
一般来讲,Obj-C 对象中都会有一些属性。如代码所示
1 | #import <Foundation/Foundation.h> |
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true