初始化总是应该使用相同的内存块吗?

谢尔盖
    SomeClass *obj = [SomeClass alloc];
    NSLog(@"%@", obj);
    obj = [obj initWithNSNumber:[NSNumber numberWithInt:1]];
    NSLog(@"%@", obj);

两个日志语句始终显示相同的地址。这实际上是我所期望的,但这是标准的Objective-C行为吗?我的意思是我可以指望在不同的编译器/语言版本中这是相同的吗?

我真正想要的是一个很好的教程,它介绍对象初始化和相关过程如何在Objective-C中真正起作用。

编辑:在Wain的回答之后,向问题中添加了信息:如果初始化器的实现是这样的,我可以算一下这在不同的编译器/语言版本中是否是相同的

self = [super init];
if (self) {
//..
}
return self
温恩

您真的无法在任何时候保证它。任何init方法实现都有权丢弃已分配的内存,并用更合适的其他方法替换(基于传递给它的参数)。如果您尝试使用,则NSArray很可能会获得不同的地址(任何实现为类集群的方法都是理想的选择)。


通过您的编辑,super可以完成完全相同的操作。这就是为什么您写:

self = [super init];

因此,如果super确实更改了分配的内存,则self引用将被更新以指向新的分配。

不,您不能保证在不同版本的SDK中都相同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我应该总是初始化视图模型对象吗?

来自分类Dev

我应该总是初始化视图模型对象吗?

来自分类Dev

读入未初始化的内存空间总是不明智的吗?

来自分类Dev

使用mmap()初始化2D数组的共享内存,是否还需要为后续指针映射内存?我应该改用shm吗?

来自分类Dev

OpenCL是否总是对设备内存进行零初始化?

来自分类Dev

分配+初始化内存使用机制

来自分类Dev

使用未初始化的内存

来自分类Dev

使用 realloc() 初始化内存

来自分类Dev

C ++包含关系-总是需要初始化列表吗?

来自分类Dev

即使初始化失败也应该使用SDL_Quit()吗?

来自分类Dev

我应该使用useRef来存储一次性初始化数据吗?

来自分类Dev

初始化程序块可以抛出异常吗?

来自分类Dev

可以从初始化程序块调用实例方法吗?

来自分类Dev

使用函数初始化静态向量会导致内存泄漏吗?

来自分类Dev

EF codefirst:我应该初始化导航属性吗?

来自分类Dev

副本初始化与副本的副本初始化相同吗?

来自分类Dev

JAVA初始化块

来自分类Dev

“使用”块进行SqlCommand初始化的好处

来自分类Dev

在静态初始化块中使用try catch

来自分类Dev

在静态初始化块中使用try catch

来自分类Dev

我应该使用{}还是{0}初始化数组/结构?

来自分类Dev

我如何/应该初始化并正确使用`struct`?

来自分类Dev

我如何/应该初始化并正确使用`struct`?

来自分类Dev

未初始化的原始实例变量是否使用内存?

来自分类Dev

Python使用设置初始化内存装饰器

来自分类Dev

对变量ans使用未初始化的内存

来自分类Dev

Python使用设置初始化内存装饰器

来自分类Dev

EF核心3.1:在使用紧急加载加载相关实体时,我应该初始化列表导航属性吗?

来自分类Dev

我应该在哪里初始化一个变量以在 IF 块中工作?

Related 相关文章

  1. 1

    我应该总是初始化视图模型对象吗?

  2. 2

    我应该总是初始化视图模型对象吗?

  3. 3

    读入未初始化的内存空间总是不明智的吗?

  4. 4

    使用mmap()初始化2D数组的共享内存,是否还需要为后续指针映射内存?我应该改用shm吗?

  5. 5

    OpenCL是否总是对设备内存进行零初始化?

  6. 6

    分配+初始化内存使用机制

  7. 7

    使用未初始化的内存

  8. 8

    使用 realloc() 初始化内存

  9. 9

    C ++包含关系-总是需要初始化列表吗?

  10. 10

    即使初始化失败也应该使用SDL_Quit()吗?

  11. 11

    我应该使用useRef来存储一次性初始化数据吗?

  12. 12

    初始化程序块可以抛出异常吗?

  13. 13

    可以从初始化程序块调用实例方法吗?

  14. 14

    使用函数初始化静态向量会导致内存泄漏吗?

  15. 15

    EF codefirst:我应该初始化导航属性吗?

  16. 16

    副本初始化与副本的副本初始化相同吗?

  17. 17

    JAVA初始化块

  18. 18

    “使用”块进行SqlCommand初始化的好处

  19. 19

    在静态初始化块中使用try catch

  20. 20

    在静态初始化块中使用try catch

  21. 21

    我应该使用{}还是{0}初始化数组/结构?

  22. 22

    我如何/应该初始化并正确使用`struct`?

  23. 23

    我如何/应该初始化并正确使用`struct`?

  24. 24

    未初始化的原始实例变量是否使用内存?

  25. 25

    Python使用设置初始化内存装饰器

  26. 26

    对变量ans使用未初始化的内存

  27. 27

    Python使用设置初始化内存装饰器

  28. 28

    EF核心3.1:在使用紧急加载加载相关实体时,我应该初始化列表导航属性吗?

  29. 29

    我应该在哪里初始化一个变量以在 IF 块中工作?

热门标签

归档