Objective-C 学习笔记 | 协议(property)

news2024/11/24 17:52:52

Objective-C 学习笔记 | 协议(property)

  • Objective-C 学习笔记 | 协议(property)

Objective-C 学习笔记 | 协议(property)

iOS 应用经常会用 UITableView 实例来显示数据,但是它本身不包含数据,必须从辅助对象处获取。因此,程序必须给

UITableView 对象指定数据源对象,这个对象将扮演数据源的角色。

请添加图片描述

协议可以为一个对象指定角色。协议是一组方法声明,其中的部分方法是必须的,而另一些方法是可选的。如果某个对象要扮演特定的角色,就一定要实现相应的必需方法(required method),并选择实现部分的可选方法(optional method)。

UITableView 的数据源协议就是 UITableViewDataSource,其声明的方法如下:

请添加图片描述

UITableView 类有 dataSource 属性,以下是它的声明:

@property(nonatomic, assign) id<UITableViewDataSource> dataSource;

所以 UITableView 的数据源对象可以是任意类型的对象,只要它遵从 UITableViewDataSource 协议,并实现了该协议的所有必需方法,编译器就认为该对象可以作为 UITableView 对象的数据源。

在创建用于 UITableView 数据源的新类时,需要在该类的头文件中明确说明:这个类遵守 UITableViewDataSource 协议:

@interface TerrificViewController : UIViewController
    <UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate>
@end

接着,要在 TerrificViewController.m 中实现各个协议的必需方法。

如果表格给它的数据源发送了数据源没实现的可选方法的消息时,程序会崩溃。为了避免这种情况,UITableView 对象需要先询问数据源对象是否实现了某个可选方法。

比如,可以使用 respondsToSelector: 询问对象是否实现了某个方法,该方法在 NSObject 中实现了,所以可以给任意对象发送该消息。传入需要询问的方法的选择器,返回值是一个 BOOL:

if ([_dataSource respondsToSelector:@selector(numberOfSectionsInTableView:)]) {
    _numberOfSections = [_dataSource numberOfSectionsInTableView:self];
} else {
    _numberOfSections = 1; // 默认的段行为 1
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1830849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

采集罗克韦尔AB、西门子等PLC数据发布成HTTP接口

智能网关IGT-DSER集成了多种PLC的原厂协议&#xff0c;方便实现各种PLC的原厂协议转换为HTTP协议的服务端&#xff0c;通过网关的参数配置软件绑定JSON文件的字段与PLC寄存器地址&#xff0c;即可接收来自客户端的GET、PUT和POST命令&#xff0c;解析和打包JSON文件(JSON文件格…

去哪儿网PMO张璐受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 去哪儿网PMO张璐女士受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“数字化助力组织目标落地”。大会将于6月29-30日在北京举办&#xff0c;敬请关注&#xff01; 议题简要 本次议题将分享去哪儿流程标准化&工具化…

我用chatgpt写了一款程序

众所周知&#xff0c;Chatgpt能够帮助人们写代码&#xff0c;前几天苏音试着完全用Chatgpt写一款Python程序 有一句话我很赞同&#xff0c;未来能代替人的不是AI&#xff0c;是会使用AI的人。 最终&#xff0c;写下来效果还不错&#xff0c;完全提升了我的办公效率。 开发前…

告密者斯诺登:永远不要信任 OpenAI 或其 ChatGPT 等产品|TodayAI

为什么 OpenAI 变得越来越难以信任 OpenAI&#xff0c;一家以开发先进人工智能技术而闻名的公司&#xff0c;正面临越来越多的信任危机。近期&#xff0c;一些令人不安的迹象使人们对这家公司的透明度和安全性产生了质疑。 首先&#xff0c;在 OpenAI 的旧金山办公室外&#…

顺安蜘蛛池四川官网下载

baidu搜索&#xff1a;如何联系八爪鱼SEO? baidu搜索&#xff1a;如何联系八爪鱼SEO? baidu搜索&#xff1a;如何联系八爪鱼SEO? 虽然影视泛目录很火,但超度站群版本自出现以来-直流量稳定,可惜这两年起站全靠域名。但话说回来,咱不能否认,只要用的域名好,做啥泛目录都有好…

湖北省小学毕业学籍照片采集流程及教师手机拍摄方法说明

随着教育信息化的不断推进&#xff0c;学籍管理也越来越规范和便捷。湖北省小学毕业学籍照片采集作为学籍管理的重要组成部分&#xff0c;对于确保学生信息的准确性和完整性具有重要意义。本文将详细介绍湖北省小学毕业学籍照片采集的流程&#xff0c;并提供教师使用手机拍摄照…

如何用优盘加密自己的电脑:人离后自动锁定

看电影的时候&#xff0c;看到有人展示&#xff0c;用优盘加密自己的电脑&#xff0c;人走开的时候拔下优盘&#xff0c;自动上锁。似乎很科幻&#xff0c;其实这样的软件非常多&#xff0c;不论是成品商业用的还是免费的&#xff0c;都非常多&#xff0c;很多版权管理比较强的…

结合gin框架在沙箱环境下实现电脑网站支付和当面支付

文章目录 配置支付宝开放平台编写代码测试电脑网站支付当面扫码支付 配置支付宝开放平台 支付宝开放平台 点击链接&#xff0c;扫码进入后&#xff0c;点击沙箱&#xff1a; 点击沙箱应用&#xff0c;可以看到APPID&#xff0c;接口加签方式选择系统默认密钥就行&#xff0…

前端JS必用工具【js-tool-big-box】学习,打开全屏和关闭全屏

这一小节&#xff0c;我们说一下 js-tool-big-box 工具库中&#xff0c;打开全屏和关闭全屏的方法学习。 我们知道&#xff0c;浏览器想打开全屏&#xff0c;按一下 F11 键就可以了&#xff0c;但一来这个功能不一定所有使用的用户都知道&#xff0c;二来在一些例如大屏的需求…

前端实现获取后端返回的文件流并下载

前端实现获取后端返回的文件流并下载 方法一&#xff1a;使用Axios实现文件流下载优点缺点 方法二&#xff1a;使用封装的Request工具实现文件流下载优点缺点 方法三&#xff1a;直接通过URL跳转下载优点缺点 结论 在前端开发中&#xff0c;有时需要从后端获取文件流&#xff0…

【解决方案】数据采集工作站数据传不上去?

数据采集工作站扮演着至关重要的角色&#xff0c;它们负责收集、处理和传输各种传感器和设备的数据。然而&#xff0c;有时会遇到数据传输失败的问题。本文将详细探讨数据采集工作站数据传不上去的可能原因及其解决方案。&#xff08;更多了解采集器设备可前往苏州稳联&#xf…

芯片封测从入门到精通

文章目录 &#x1f4d1;前言一、作者简介二、书籍亮点三、内容简介四、适读人群 &#x1f4d1;前言 在科技日新月异的今天&#xff0c;芯片作为现代电子设备的核心部件&#xff0c;其性能与可靠性直接决定了整个产品的竞争力。而芯片封测&#xff0c;作为确保芯片性能与可靠性…

闭包、内存泄漏、垃圾回收详解

首先要说清楚这个话题&#xff0c;必须要先清楚什么是垃圾回收&#xff0c;要清楚什么是垃圾回收呢&#xff0c;必须要知道什么是垃圾&#xff0c;所谓的垃圾就是不再需要的内存&#xff0c;需要或者不需要是由人为来决定的 <!DOCTYPE html> <html lang"en"…

原生APP和H5 APP的区别

原生APP和H5 APP是两种常见的移动应用开发方式。它们在技术架构、性能表现、开发成本、用户体验等方面都有着明显的区别。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1. 技术架构 原生APP&#xff1a;原生APP是使用手机操作系统的…

表格识别工具哪个好?简单操作,一键识别表格

随着2024年高考的圆满结束&#xff0c;考生们迎来了新的挑战——志愿填报。这不仅是一个技术活&#xff0c;更是一个信息战。 面对海量的高校信息和复杂的数据表格&#xff0c;考生们需要一种快速、准确的方法来整理和分析这些数据。幸运的是&#xff0c;现代科技提供了多种表…

CPRI协议理解——控制字内容

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 CPRI协议理解——控制字内容 前言同步标识L1 Inband ProtocolZ130.0Z.194 C&M 通道慢速C&M 通道快速C&M 通道Vendor Specific DataControl AxC Data 后记 前言 …

m4s转mp3——B站缓存视频提取音频

前言 しかのこのこのここしたんたん&#xff08;鹿乃子乃子虎视眈眈&#xff09;非常之好&#xff0c;很适合当闹钟&#xff0c;于是缓存了视频&#xff0c;想提取音频为mp3 直接改后缀可乎&#xff1f;格式转换工具&#xff1f; 好久之前有记录过转MP4的&#xff1a; m4s转为…

DbGate 开源、免费的 、智能的、NoSQL SQL 数据库工具

1、简介 DbGate 是麻省理工学院许可的开源项目。支持Windows、Linux、MacOS、WEB(Docker、NPM) 2、下载地址/官网 DbGate | Open Source SQLnoSQL Database Client Tips&#xff1a;下载时建议使用稳定版本哦&#xff01; 3、支持的数据库 MySQL、SQLServer、Oracle、Postg…

【C++提高编程-08】----C++ STL之常用查找算法

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

实用技巧,用lsof命令监控tar文件解压进度,简单有效!

在Linux系统中&#xff0c;tar命令是一个非常常用的工具&#xff0c;用于创建和解压缩归档文件。尽管tar命令本身没有提供直接查看解压进度的功能&#xff0c;但我们可以借助lsof&#xff08;List Open Files&#xff09;命令来间接监控解压进度。本文将详细介绍如何使用lsof命…