`
weiqingfei
  • 浏览: 315373 次
  • 性别: Icon_minigender_1
  • 来自: 黑洞
社区版块
存档分类
最新评论

自定义类的初始化。

阅读更多
一个类的初始化写法纠结了多少人!
下面这种初始化方法在Object C里,就像耶稣一样无法撼动其位置,也像耶稣一样,没人敢有异议,以至于有人会说记住就可以了,别问为什么。
- (id) init
{
    if (self = [super init])
    {
        // your code here
    }

    return self;
}


对于初次接触Object C的人来说,这种写法甚是纠结,
但是如果你要是知道,Object C里会出现一下几种匪夷所思的现象,你就会感慨,原来还真想耶稣一样能保护你。

1.实例的内存地址,是在alloc的时候就已经准备好了的,init只是用来初始化其内部数据。
2.调用父类初始化方法时,有可能会改变实例的内存地址!
3.调用父类初始化方法时,有可能会返回nil!

为了对应情况2,需要把父类初始化方法改变后的地址传给self,要不然子类初始化方法所处理的数据还都在老地址上。
为了对应情况3,需要判断返回的父类是不是nil,如果是nil的话,子类也无法处理了。

出现情况3,应该是父类初始化出错了。
但是什么时候会出现情况2,以及出现情况2时,老内存的占用是如何释放的,还是不得其所。
分享到:
评论

相关推荐

    视频直播系统 2018第五章 自定义播放器初始化KMediaPl

    视频直播系统 2018第五章 自定义播放器初始化KMediaPlayer类

    Android使用自定义注释来初始化控件

    一种常见的方法是使用自定义注释(Annotations)来简化UI控件的初始化过程。本文将深入探讨如何在Android应用中创建并使用自定义注释来实现这一目标。 首先,让我们理解什么是注释。在Java(Android是基于Java的)...

    自定义类加载器实现自定义加载

    - 类加载过程分为三个阶段:加载、验证、准备、解析和初始化。在加载阶段,类加载器寻找并加载类的二进制数据。 - Java中的类加载器采用双亲委派模型,即一个类首先由启动类加载器Bootstrap ClassLoader尝试加载,...

    C#自定义类的制作方法

    在应用构造函数和析构函数时,用户需要了解它们的概念和作用,正确地使用它们以确保类的正确初始化和回收。 C# 中的构造函数和析构函数: 在 C# 中,构造函数和析构函数是类中比较特殊的两种成员函数,主要用来对...

    MFC 自定义消息和自定义类

    1. **注册消息**: 在应用程序初始化时,通过`RegisterWindowMessage`函数为自定义消息分配一个唯一的ID。 ```cpp UINT uMsg = RegisterWindowMessage(_T("MyCustomMessage")); ``` 2. **发送消息**: 在需要发送...

    初始化颜色对话框自定义颜色集,显示颜色对话框的自定义颜色控件C#源代码 //初始化颜色对话框自定义颜色集

    初始化颜色对话框自定义颜色集,显示颜色对话框的自定义颜色控件C#源代码 //初始化颜色对话框自定义颜色集 ColorDialog MyDlg = new ColorDialog(); MyDlg.CustomColors = new int[]{6916092, 15195440, 16107657,...

    android在布局文件中自定义参数并在初始化时获取

    为了使应用更具灵活性和可扩展性,开发者有时需要在布局文件中自定义参数,并在程序运行时初始化时获取这些参数。这篇博文将探讨如何实现这一功能,同时结合“源码”和“工具”的概念来增强我们的理解。 首先,...

    探究java的ClassLoader及类变量初始化顺序

    理解ClassLoader的工作机制以及类变量初始化的顺序对于深入理解Java运行时环境至关重要。这篇博文将探讨这两个主题。 首先,让我们深入了解Java的ClassLoader。ClassLoader是一个抽象类,它是Java中的一个关键组件...

    VB2005自定义类

    3. **构造函数**(Constructors):构造函数是一个特殊的方法,用于初始化新创建的对象。在VB2005中,构造函数通常命名为`New`。 4. **事件**(Events):事件允许类与其他类进行通信,当特定条件满足时触发。在VB...

    初始化和清理.ppt初始化和清理.ppt初始化和清理.ppt初始化和清理.ppt

    程序员可以自定义构造器以满足特定的初始化需求,这通常涉及参数。通过参数,我们可以传入初始值给对象。例如: ```java class Tree { int height; Tree() { print("Planting a seedling"); height = 0; } ...

    spring boot源码-自定义初始化器的三种方式

    其中`com.example.yourpackage.YourInitializer`是你的自定义初始化器类的全限定名。 2. **编写自定义初始化器**: ```java import org.springframework.beans.BeansException; import org.springframework....

    as3 自定义类

    // 在这里处理传入的参数,初始化按钮 } override protected function clickHandler(event:Event):void { // 覆盖父类的点击事件处理,添加自定义行为 } } } ``` 在这个例子中,我们创建了一个名为`TButton`...

    C#127初始化颜色对话框自定义颜色集 源代码

    当开发者需要在应用程序中提供一个自定义颜色选择功能时,初始化颜色对话框并自定义颜色集是一个常见需求。本篇文章将深入探讨如何在C#127版本中实现这一功能,并通过源代码来阐述具体的实现步骤。 首先,我们需要...

    wince6—创建初始化函数

    在Windows CE 6.0(简称WinCE6)开发中,使用Visual Studio 2005作为集成开发环境(IDE)时,经常会遇到创建自定义对话框控件并需要进行初始化的情况。`OnInitDialog()` 函数是MFC(Microsoft Foundation Classes)...

    金蝶K3系统初始化流程

    需要完成的初始化工作,包括系统设置、静态数据、动态数据、基础资料、物料管理、计量单位、部门管理、职员管理、费用管理、要素费用、币别管理、科目管理、结算方式、辅助资料、自定义核算项目、自定义辅助资料等。...

    vc2008 自定义表格类

    这个自定义表格类通过提供一个单一的初始化函数,大大简化了这个过程,使得设置表格布局和属性变得更加便捷。 4. **额外功能**:除了基础的表格操作,开发者还为这个类添加了几个自定义函数。这些函数可能是用于...

    osal初始化流程

    用户可以在`SampleApp_Init()`中进行自定义的初始化工作,如配置应用层特定的参数或资源。 ```c void SampleApp_Init(void) { // 用户自定义的初始化代码 } ``` #### 三、细节解析 - **中断管理** 在...

    Linux操作系统内存磁盘初始化技术详细解析

    什么是内存磁盘初始化?深入分析initrd,测试自定义的初始化RAM盘...

    Java起航 ---- 类的初始化历程

    在Java编程语言中,类的初始化是一个至关重要的过程,它涉及到类加载、连接以及初始化等多个阶段。本篇文章将深入探讨“Java起航——类的初始化历程”,并结合JVM(Java虚拟机)的工作原理,帮助你更好地理解这个...

    max 插件初始化

    "max 插件初始化"是一个关键的话题,特别是对于那些想要开发自己的3ds Max插件的开发者来说。下面将详细解释这个主题。 插件是3ds Max中的自定义工具,它们可以扩展软件的功能,提供新的工作流程或解决特定问题。...

Global site tag (gtag.js) - Google Analytics