专栏首页HelloCode开发者学习平台iOS开发-KVC从使用到原理详解(1)

iOS开发-KVC从使用到原理详解(1)

  • 技术提供:Gavin老师
  • 文章整理:CC老师

相比往年的iOS招聘,相比之前波涛汹涌,这会已经是相对风平浪静.但是实际上这样的风平浪静只不过是由于无法坚守的iOS 开发者相继退出而已.但是该有的竞争压力还是依然存在.只不过是暗流涌动.

其实很多开发者的抱怨,无法是以下4点给大家造成这样的因素:

  • 你的不思进取
  • iOS岗位的饱和率
  • 移动互联网行业的逐步成熟导致用人单位的要求越来越高
  • 来小程序的冲击

当然这绝对不是全部原因,但可能有一个原因可能是你的.其实移动互联网的逐步成熟.对于技术人才的要求也越来越高.作为技术工种,学习是必不可少的.

一.KVC概述

其实KVC是面试环节中,最常见的面试题.为何常见,其实可以从这一个小小的问题,就能够判断一个开发者的基本能力和他的学习能力.并且项目中KVC的引入实际上是可以大大提高开放效率,减少代码量.

二.了解KVC

KVC(Key-Value-Coding)意思是键值编码。在iOS中,提供了一种方法通过使用属性的名称(也就是Key)来间接访问对象的属性方法。

实际上就是通过类定义我们可以看到类的各种属性,那么使用属性的名称我们就能访问到类实例化后的对象的这个属性值。

三.KVC特性

  • 没有setter/getter 方法也可以直接去找对应名称的变量操作

上述方法与直接调用getter/setter方法有什么区别?

  • 调用上面的方法其实默认会调用接收消息对象的getter/setter方法来对key键匹配的属性进行读/写操作.
  • 如果接受消息的对象并没有实现相应的getter/setter方法的话,会直接访问对象中的匹配变量作相应操作(包括私有变量)

四.利用KVC修改控件的内部属性

在开发过程中,有了解到很多UI控件是由许多内部UI控件组合而成的.但是Apple并没有提供访问这些控件的API.而KVC在大多数情况下,是可以解决这个问题的.这也是在iOS开发中的一个很有意思的技巧.

例如,个性化UITextField 中的placeHolderText,就可以按照如下的方式:

如果还想知道那些隐秘的API,大家可以使用runtime来获取Apple不想开放的属性名.

本文分享自微信公众号 - HelloCode开发者学习平台(HellCode_CC),作者:Gavin老师

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-08-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • KVC基本使用

    Key Value Coding,取其三个单词首字母浓缩而成。直白翻译过来就是键值编码,什么意思呢?简单来说,就是操作一个对象,也可以像操作字典一样,通过ke...

    CC老师
  • 图片滤镜

    在Metal / OpenGL ES 框架,只有3种基本图元. 点,线,三角形. 所以在显示一个矩形图片时. 实际在显示本质是由2个三角形组成.

    CC老师
  • Core Animation Programming

    Core Animation 这个框架实际上非常容易让iOS开发者误解仅仅是用来做动画效果的框架.实际上动画仅仅是是它功能的冰水一角. 它包括了图形绘制,投影,...

    CC老师
  • 【C#】妈妈再也不用担心自定义控件如何给特殊类型的属性添加默认值了,附自定义GroupBox一枚

    ------------------更新:201411190903------------------

    AhDung
  • 人工智能阿尔法元

    《吴军·硅谷来信》20171019《特别来信丨千字解析人工智能阿尔法元》 ? 10 月 19 日,《自然》(Nature)杂志官网上刊登了 Google De...

    企鹅号小编
  • label自定义的惨痛教训

    修改label文字: source.DefaultLabelProperties.Style.Font.Size=9; 修改文字的位置: source.Defa...

    用户1075292
  • 目录1.智能指针的作用2.智能指针的使用3.智能指针的设计和实现

    C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。程序员自己管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,...

    用户1215536
  • Foley音乐:学习从视频生成音乐

    中文摘要:本文介绍了Foley Music系统,该系统可以为人们演奏乐器的无声视频片段合成合理的音乐。我们首先为视频到音乐生成器确定两个关键的中间表示形式:视频...

    用户7454122
  • 小米MIX2正式发布——正面几乎全是屏幕

    神无月
  • 化繁为简,11个便携式电路开源分享

    越来越多的可穿戴设备涌入生活中, 人们开始追求一种便携式的生活方式, 便携式设备被要求在化繁为简的同时提供丰富的功能满足生活、工作、学习的需求,因此在设计以及制...

    MCU起航

扫码关注云+社区

领取腾讯云代金券