Objective-C 学习笔记 | init

Objective-C 学习笔记 | init

  • Objective-C 学习笔记 | init
    • 编写 init 方法
    • 禁用 init 方法

Objective-C 学习笔记 | init

init 是实例方法,负责初始化对象,并返回初始化后的对象的地址。

编写 init 方法

完整代码见于:UestcXiye/Objective-C-Practice 的 Appliances。

本程序的继承结构如下图所示:

请添加图片描述

下面来分析 BNROwnedAppliance *a = [[BNROwnedAppliance alloc] init]; 的调用过程:

请添加图片描述

编写初始化方法的规则:

  1. 其他的初始化方法都应该(直接或间接地)调用指定初始化方法。
  2. 指定初始化方法应该先调用父类的指定初始化方法,再对实例变量进行初始化。
  3. 如果某个类的指定初始化方法和父类的不同(这里指的是方法名不同),就必须覆盖父类的指定初始化方法,并调用新的指定初始化方法。
  4. 如果某个类有多个初始化方法,就应该在相应的头文件注明哪个方法是指定初始化方法。

禁用 init 方法

有些时候,初始化一个对象时必须带上特定的值,不能使用默认值。因此,我们需要覆盖 init 方法,告诉程序员不能调用这个方法,并提供修改建议:

- (instancetype)init
{
    [NSException raise:@"BNROwnedApplianceInitialization" format:@"Use initWithProductName:, not init"];
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【前端:HTML+CSS+JavaScript】HTML基础(下)

一、表格标签 1.1 表格的主要作用 表格主要用于显示、展示数据。因为她可以让数据显示的非常频繁&#xff0c;可读性非常好。特别是后台展示数据的时候&#xff0c;能够熟练运用表格就线程显得很重要。表格不是用来布局页面的。而是用来展示数据的。 1.2 表格的基本语法 <…

windows11 x64 23H2 企业纯净版2024.6.16

闲来无事试安装了下da_nao_yan的 【6月12日更新】Windows11 22631.3737企业版 23H2 自用优化版 &#xff08;原版地址&#xff1a;https://bbs.pcbeta.com/viewthread-1985546-1-1.html&#xff09;&#xff0c;感觉比原版流畅多了&#xff0c;重新按照自己习惯封装了下&#x…

Nvidia芯片Jetson系列 系统烧录环境 搭建

一、序言 Jetson 系列产品烧录系统的方法一般有两种&#xff1a; 一种为使用 NVIDIA 官方提供 的 SDK manager 软件给 Jetson 设备烧录系统&#xff08;请查看说明文档《Jetson 产品使用 SDKmanager 烧录系统》&#xff09;。 另一种即为当前文档所描述的&#xff0c;在安装 Ub…

Azure数据分析Power BI

Azure数据分析Power BI 一、Power BI简介二、Power BI 如何匹配角色三、Power BI 构建基块四、使用 Power BI 服务一、Power BI简介 Microsoft Power BI 是一系列的软件服务、应用和连接器,这些软件服务、应用和连接器协同工作,将不相关的数据源转化为合乎逻辑、视觉上逼真的…

Java实现俄罗斯方块-初始化游戏界面的JPanel

目录 技术实现&#xff1a; 2.初始化游戏界面&#xff1b; 2.1 什么是游戏界面 2.2 JPanel面板 2.3 流布局管理器【FlowLayout】 2.4 网络布局管理器 【GridLayout】 2.5 边界布局管理器 技术实现&#xff1a; 1.初始化游戏窗口&#xff1b; 2.初始化游戏界面&#xff…

Docker的基本操作 及 容器与外部机互相通讯(持续更新中)

Docker入门&#xff1a; Docker 入门教程 - 阮一峰的网络日志 (ruanyifeng.com)docker入门&#xff0c;这一篇就够了。-CSDN博客Docker 容器使用 | 菜鸟教程 (runoob.com)Docker自定义网络和运行时指定IP_docker run ip-CSDN博客 基本命令 链接&#xff1a;docker入门&#…

Java面向对象-final关键字

Java面向对象-final关键字 一、final1、修饰变量2、修饰方法3、修饰类4、案例 一、final 可以修饰变量、方法、类 1、修饰变量 final修饰一个变量&#xff0c;变量的值不可以改变&#xff0c;这个变量就变成一个字符常量&#xff0c;约定俗称的规定&#xff1a;名字大写。 f…

【高端精品】最新手机版微信小程序(拼多多+京东)全自动操作项目

现代互联网经济的发展带来了新型的盈利方式&#xff0c;通过微信小程序的拼多多和京东进行商品自动巡视&#xff0c;为商家带来增的流量&#xff0c;同时为使用者带来利润。这种盈利方式无需复杂操作&#xff0c;用户仅需启动相应程序&#xff0c;商品信息便会被系统自动收集。…

DVWA - Brute Force

DVWA - Brute Force 等级&#xff1a;low ​ 直接上bp弱口令爆破&#xff0c;设置变量&#xff0c;攻击类型最后一个&#xff0c;payload为用户名、密码简单列表 ​ 直接run&#xff0c;长度排序下&#xff0c;不一样的就是正确的用户名和密码 ​ 另解&#xff1a; 看一下…

ElementPlus非表单组件ElUpload值更新后校验不消失问题

项目场景&#xff1a; el-form表单中有一个上传组件&#xff0c;有必填校验。 问题描述 先触发表单的必填校验(点击提交按钮)&#xff0c;然后再上传文件&#xff0c;必填校验的提示一直存在&#xff0c;如果再次点击提交&#xff0c;手动触发表单校验&#xff0c;必填校验消…

Oracle数据库Day03-单行函数

1. 单行函数 处理数据项接受函数并返回一个值对返回的每一行采取行动每行返回一个结果可能会修改数据类型可以嵌套接受可以是列或表达式的参数 function_name[(arg1, arg2,…)]

Retrofit 注解参数详解

添加依赖 implementation com.squareup.retrofit2:retrofit:2.9.0 implementation com.squareup.retrofit2:converter-gson:2.9.0 初始化Retrofit val retrofit Retrofit.Builder().baseUrl("http://api.github.com/").addConverterFactory(GsonConverterFactory…

设计模式之工厂方法模式(Factory Method Pattern)

目录 1.1、前言1.2、工厂方法模式简介1.2.1、工厂方法模式的主要特点1.2.2、工厂方法模式的主要结构1.2.3、使用工厂方法模式的好处 1.3、SpringBoot中那些场景使用了工厂方法模式1.4、日常工作中那些业务场景可以使用工厂方法模式1.5、工厂方法模式实战&#xff08;以某商场一…

【数据结构与算法】绪论、线性表 QA

以Niklus Wirth的观点&#xff0c;程序等于什么? 程序等于算法加数据结构。公式&#xff1a;“程序 算法 数据结构”。 算法的重要特性。 有穷性&#xff1a;算法必须能在有限的步骤之后结束。确定性&#xff1a;算法的每一步骤必须明确&#xff0c;没有二义性。可行性&a…

讲解 Faster R_CNN原理:

Fast R-CNN改进 上图为论文中的图片 先使用CNN网络获得整体的特征图&#xff1a;这里可以卷积共享&#xff0c;加快速度 然后将原图中的Region Proposals(区域)映射到Feature Map中&#xff0c;获得一系 列RoI(感兴趣区域) 然后不再对每个RoI分别进行分类回归&#xff0c;而是通…

sqlite3模块的使用

1. SQLite数据库 SQLite是一个轻量级的, 基于磁盘的, 关系型的数据库管理系统(RDBMS). 它不需要一个独立的服务器进程或操作系统级别的配置. SQLite是D.Richard Hipp在2000年创建的, 并且由于其小巧, 快速, 可靠和易于使用的特性, 它在全球范围内得到了广泛的应用.以下是 SQLi…

项目干系人管理

目录 1.概述 2.四个子过程 2.1. 识别干系人&#xff08;Identify Stakeholders&#xff09; 2.2. 规划干系人参与&#xff08;Plan Stakeholder Engagement&#xff09; 2.3. 管理干系人参与&#xff08;Manage Stakeholder Engagement&#xff09; 2.4. 监督干系人参与&…

Dell戴尔灵越Inspiron 16 Plus 7640/7630笔记本电脑原装Windows11下载,恢复出厂开箱状态预装OEM系统

灵越16P-7630系统包: 链接&#xff1a;https://pan.baidu.com/s/1Rve5_PF1VO8kAKnAQwP22g?pwdjyqq 提取码&#xff1a;jyqq 灵越16P-7640系统包: 链接&#xff1a;https://pan.baidu.com/s/1B8LeIEKM8IF1xbpMVjy3qg?pwdy9qj 提取码&#xff1a;y9qj 戴尔原装WIN11系…

【stm32单片机应用】基于I2C协议的OLED显示(利用U82G库)

一、U8g2库 &#xff08;一&#xff09;U8g2简介 U8g2 是一个用于单色和彩色显示的嵌入式图形库&#xff0c;特别适用于单色OLED、LCD显示屏的驱动。它是对早期U8g库的扩展和改进&#xff0c;提供了更多功能和更广泛的硬件支持。U8g2作为一款强大而灵活的嵌入式图形库&#x…

HTML和CSS基础(一)

前言 HTML&#xff08;HyperText Markup Language&#xff09;是一种用于创建网页的标准标记语言。它由各种标签组成&#xff0c;这些标签定义了网页的结构和内容。HTML的早期形式诞生于1989年&#xff0c;由CERN的物理学家Tim Berners-Lee发明&#xff0c;最初用于在科学家之…