初始化方法模式

2024-04-28

我在理解它的工作原理时遇到问题。分配 self 从 init 消息返回似乎很奇怪

- (id)init
{
    if((self=[super init])) {
       //code here for setting up
    }

    return self;    
}

The init方法首先分配隐式self局部变数 (self是传递给方法的两个隐藏参数之一)到超类的返回值指定初始化器。这背后的原因是初始化器可以返回与接收消息的对象不同的对象,例如,当无法正确初始化接收器时,或者当返回现有实例以避免初始化新实例时。

After self被设置后,if语句确保实例变量仅在以下情况下才被初始化:self is not nil. If self is nil,访问实例变量的内存可能会出错。返校班很少nil但它仍然是一个有效的返回值。

这在实现初始化程序 http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocAllocInit.html#//apple_ref/doc/uid/TP30001163-CH22-SW4.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初始化方法模式 的相关文章

随机推荐

  • CSV 实际上是....分号分隔值...(在 AZERTY 上导出 Excel)

    我在这里有点困惑 当我使用 Excel 2003 将工作表导出为 CSV 时 它实际上使用分号 Col1 Col2 Col3 shfdh dfhdsfhd fdhsdfh dgsgsd hdfhd hdsfhdfsh 现在 当我使用 Mic
  • 比 O(n) 更好的范围交集算法?

    范围交集是一个简单但不平凡的问题 已经回答过两次了 查找数字范围交集 https stackoverflow com questions 224878 find number range intersection 比较日期范围 https
  • 如何正确离开临界区?

    我有以下 C 代码 我在其中使用临界区对象 https msdn microsoft com en us library windows desktop ms682530 v vs 85 aspx EnterCriticalSection
  • mapFragment.getMapAsync 处的 NullPointerException

    在解决了与我的标题相关的问题后 我找不到问题的解决方案 我有一个NullPointerException at mapFragment getMapAsync 下面是我的MapActivity code package com exampl
  • 如何覆盖magento中的管理模板文件?

    我需要覆盖 adminhtml sales order create items grid phtml 文件 以在从管理员创建新订单时在每个项目下显示一些自定义文本 我希望通过自定义模块来完成此操作 任何人都可以建议如何覆盖管理模板文件 非
  • JUnit 测试 Spymemcached 客户端

    我有一个类围绕spymemcached 客户端 我想编写一些JUnit 测试来测试getValue 和addKey 方法是否有效 问题是无法从测试服务器访问spymemcached 服务器 所以我想这里需要一些模拟 我的简化类看起来像这样
  • 如何在 Apache POI 中获取 Excel 空白单元格值?

    我有一个巨大的 Excel 文件 其中包含大量列 如下所示 Column1 Column2 Column3 Column4 Column5 abc def ghi mno pqr 这是我编写的用于打印这些值的代码 try FileInput
  • 使用 ODBC 从理货中提取日账簿/交易数据

    我能够使用 Microsoft SQL 查询成功将 Excel 连接到 Tally ODBC 服务器 我现在想将整个历史记录的所有交易数据提取到 Excel 中 包括借方和贷方分类帐 就像在日记本中一样 但是 如果我使用提取CompanyV
  • 输出参数有什么问题?

    在 SQL 和 C 中 我从来都不太喜欢输出参数 我也从未在 VB6 中通过 ByRef 传递参数 依靠副作用来完成某件事只会让我烦恼 我知道它们是一种解决无法从函数返回多个结果的方法 但 SQL 中的行集或 C 和 VB 中的复杂数据类型
  • Woocommerce 根据购物车中的商品总数累进额外费用

    我正在寻找一些代码 可以根据购物车中的商品总数收取额外费用 例如 如果购物车中的商品数量 gt 6 gt 额外费用 5 如果购物车中的商品数量 gt 12 gt 额外费用 10 我努力了这段代码 https stackoverflow co
  • 免费 JqGrid - 网格不刷新

    我有一个组合框 当选择更改时 关联的网格将重新填充新数据 div class container fluid div class row div class col md 4 div div div
  • F# 中使用抽象类还是接口?

    从 C 背景开始摸索 F 在 C 中 决定何时使用接口和何时使用抽象类有明显的区别 在 F 中 我发现两者几乎合而为一 我知道 就 CLR 而言 F 中的做法与 C 中的做法相同 但是在 F 中编程时使用的 最佳实践 是什么 我应该完全避免
  • 使用 CSS 实现等高元素

    我读到了几种不同的解决方案来模拟等高的列或元素 但没有一个真正引起我的注意 因为它们使用了 hack 极其复杂的 HTML 布局或未得到广泛支持的属性 这是例子Fiddle http jsfiddle net weppos satgw 我的
  • Smarty -“无法写入文件... templates_c”。 (smarty_internal_write_file.php:44)[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是第一次使用 Smarty 它在我的笔记本电脑 MAMP 上运行良好 但是当我尝试在生产服务器 Windows 上运行基本模板时 我收到
  • 以编程方式设置 mosquitto 中的访问控制限制

    我正在开发一个将使用 mqtt 的应用程序 我将使用 python 库 我一直倾向于使用 mosquitto 但找不到以编程方式为其设置访问控制限制的方法 我正在编写的应用程序需要能够区分用户 并且只允许他们订阅某些主题 当前的解决方案看起
  • (定义一个宏)方便OpenGL命令调试?

    有时插入条件打印和检查需要很长时间glGetError 使用二分搜索的形式来缩小范围 其中第一个函数调用是 OpenGL 首先报告错误 我认为如果有一种方法可以构建一个宏 我可以包装所有可能失败的 GL 调用 并有条件地调用 那就太酷了gl
  • 如何限制 Firebase 存储的下载数量?

    据我所知 Firebase 存储中没有可以限制每个用户下载数量的安全规则 我可以使用这样的简单技巧来限制文件大小或写入的文件数量 match public userId imageId allow write if request reso
  • 如何使下拉菜单中的每个选项成为与 simple_form 调用关联的链接?

    我使用 simple form 插件有这个表单
  • 如何使用 PHP 将数据添加到现有 Excel 文件?

    我有一个包含表单和控件的 Excel 文件 由于不可能使用 PHP 从头开始 创建包含表单 控件和 VBA 代码的 Excel 文件 因此我想我可以将空 Excel 文件上传到服务器 更新它 然后让用户下载它 我知道有一些非常好的 PHP
  • 初始化方法模式

    我在理解它的工作原理时遇到问题 分配 self 从 init 消息返回似乎很奇怪 id init if self super init code here for setting up return self The init方法首先分配隐