init实际上做了什么?

 停止离开静悄悄 发布于 2023-01-12 11:30

alloc是否与内存分配有关init(或者initX等等,init系列)与在创建对象时根据需要配置分配的内存有关 - 现在或将来某些修订后的任何特定类是否需要执行任何工作in init依赖于该类的语义.但是,由于您不知道任何类是否init需要执行任何工作,您必须调用它,并且任何任意类都不知道它的超类是否需要进行任何初始化以必须init在其自己内部调用其超类init.对于这个工作链NSObject必须有一个init,它恰好它(目前,谁知道在将来)没有工作.NSObjectinit是链条的终结,也是唯一一个不需要调用另一个链条的链条init.

一些语言将两种操作(分配和初始化)组合成一个不可分割的操作(例如newJava),因此出现了混淆.事实上,Cocoa有一个new定义如下allocinit.

苹果应该真的写了:

NSObject类中定义的init方法当前不进行初始化; 它只是回归自我.

或者干脆什么也没说.

HTH

1 个回答
  • alloc是否与内存分配有关init(或者initX等等,init系列)与在创建对象时根据需要配置分配的内存有关 - 现在或将来某些修订后的任何特定类是否需要执行任何工作in init依赖于该类的语义.但是,由于您不知道任何类是否init需要执行任何工作,您必须调用它,并且任何任意类都不知道它的超类是否需要进行任何初始化以必须init在其自己内部调用其超类init.对于这个工作链NSObject必须有一个init,它恰好它(目前,谁知道在将来)没有工作.NSObjectinit是链条的终结,也是唯一一个不需要调用另一个链条的链条init.

    一些语言将两种操作(分配和初始化)组合成一个不可分割的操作(例如newJava),因此出现了混淆.事实上,Cocoa有一个new定义如下allocinit.

    苹果应该真的写了:

    NSObject类中定义的init方法当前不进行初始化; 它只是回归自我.

    或者干脆什么也没说.

    HTH

    2023-01-12 11:33 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有