gpt4 book ai didi

objective-c - 什么时候在 Objective-C 中不使用指针?

转载 作者:行者123 更新时间:2023-12-02 07:13:32 26 4
gpt4 key购买 nike

SomeObject *obj = [[SomeObject alloc] init]
[obj someMethod]
obj.someProperty

[] 和 .自动取消引用指针,对吗?因此,无论何时您使用对象,您都将始终使用指针来引用这些对象。

是否会在没有指针类型的 Objective-C 中声明一个变量?

最佳答案

除了一个异常(exception),Objective-C 中的所有对象都只存在于堆上,这意味着您将始终处理对象引用。

一个异常(exception)是 block ,它可以在堆栈上创建,然后使用 Block_copy() 移动到堆中。 .例如:

dispatch_block_t myBlock = ^{
NSLog(@"This is a block that lives on the stack");
};

并且由于它们的实现方式, block 可以被视为对象(即,您可以在任何可以使用 id 的地方使用它们)。

当然,可以在堆栈上创建任何非 Objective-C 对象。因此,如果您使用的是 Objective-C++,那么您可以在堆栈上创建 C++ 对象(就像平常一样),这意味着您将处理对象本身而不是引用。此外,可以在堆栈上创建任何原语( intchar*、结构等)。

所以简而言之,如果你正在处理对象,那么 99.999% 的时间你将处理对象引用,而不是对象本身。其他任何事情都完全取决于您。

关于objective-c - 什么时候在 Objective-C 中不使用指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3323397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com