zoukankan      html  css  js  c++  java
  • [super init]方法的调用

    当重新覆盖父类的init方法时,需要调用[super init]方法确认父类中的init是返回一个实例,而不是一个空的实例。

    那为什么要调用这个呢?

        我得猜测是这样的:因为这是一个初始化方法,需要对对象实例进行初始化,当你覆盖父类的初始化方法时,编辑器就会优先使用你的方法而不再理会父类的初始化方法,这样就会造成你的初始化方法无法完整的对对象实例进行初始化。

    其他人的解释是这样的:

    1. [super init]的作用:

    面向对象的体现,先利用父类的init方法为子类实例的父类部分属性初始化。

    2. self 为什么要赋值为[super init]:

    简单来说是为了防止父类的初始化方法release掉了self指向的空间并重新alloc了一块空间。这时的话,[super init]可能alloc失败,这时就不再执行if中的语句。

    3. super作为消息接受者的实质:

    super并不是真正的指针,[super message]的实质是由self来接受父类的message。需要注意的是,[super message]中,message方法出现的self为[super message]语境中的self,即子类实例。

  • 相关阅读:
    vs.net2003里添加邮件发件人身份验证
    Linux下用PYTHON查找同名进程
    修改机器名后要修改IIS匿名访问用户
    [C#]使用MYSQL数据库
    JIRA OutOfMemoryErrors
    获取linux下当机堆栈
    python调用pipe
    [探讨]一次性工具软件
    GGSN
    三层交换机的作用
  • 原文地址:https://www.cnblogs.com/lelun/p/5629155.html
Copyright © 2011-2022 走看看