Objective-C学习-KVC(键值编码)和KVO(键值观察)

2023-10-19 23:08

本文主要是介绍Objective-C学习-KVC(键值编码)和KVO(键值观察),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

KVC(键值编码)


      KVC(Key Value Coding)键值编码,乍一听感觉很高大上,其实简单的说起来就是一个赋值的语句,那为什么会有这个操作呢,用 '.' 语法不是更简单吗,理解上是没错的,但在点语法出现之前,我们的程序员前辈们都是通过这种赋值方法的,并且在很多情况下,KVC赋值看似麻烦,实际上是比 ‘.’ 语法简更加精炼的。

      其实在之前我们也用过键值编码的例子了,是在字典的赋值上,如

    NSMutableDictionary * dic = [NSMutableDictionary dictionary];//通过键值编码(KVC)赋值[dic setValue:@"RunIntoLove" forKey:@"me"];


下面会用代码来解释:  (当然例子还是之前的自定义类 Cricle )


首先我们为类定义几个属性

//
//  Cricle.h
//  KVC (键值编码)  KVO (键值观察)  博客
//
//  Created by YueWen on 15/9/14.
//  Copyright (c) 2015年 YueWen. All rights reserved.
//#import <Foundation/Foundation.h>#define PI 3.14 //定义π的值@interface Cricle : NSObject@property(nonatomic,strong)NSString * name;//圆的名字@property(nonatomic,assign) double radius;//半径
@property(nonatomic,assign) double circumference;//周长
@property(nonatomic,assign) double area;//面积


然后自定义一个初始化方法

/***  自定义的便利初始化方法**  @param name          圆的名称*  @param circumference 圆的半径**  @return*/
-(instancetype)initWithName:(NSString *)name withRadius:(double)radius;


实现一下

-(instancetype)initWi

这篇关于Objective-C学习-KVC(键值编码)和KVO(键值观察)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/242959

相关文章

Python动态处理文件编码的完整指南

《Python动态处理文件编码的完整指南》在Python文件处理的高级应用中,我们经常会遇到需要动态处理文件编码的场景,本文将深入探讨Python中动态处理文件编码的技术,有需要的小伙伴可以了解下... 目录引言一、理解python的文件编码体系1.1 Python的IO层次结构1.2 编码问题的常见场景二

Java中字符编码问题的解决方法详解

《Java中字符编码问题的解决方法详解》在日常Java开发中,字符编码问题是一个非常常见却又特别容易踩坑的地方,这篇文章就带你一步一步看清楚字符编码的来龙去脉,并结合可运行的代码,看看如何在Java项... 目录前言背景:为什么会出现编码问题常见场景分析控制台输出乱码文件读写乱码数据库存取乱码解决方案统一使

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Java 中编码与解码的具体实现方法

《Java中编码与解码的具体实现方法》在Java中,字符编码与解码是处理数据的重要组成部分,正确的编码和解码可以确保字符数据在存储、传输、读取时不会出现乱码,本文将详细介绍Java中字符编码与解码的... 目录Java 中编码与解码的实现详解1. 什么是字符编码与解码?1.1 字符编码(Encoding)1

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示