gpt4 book ai didi

ios - 当我从实例方法更改为类方法时,为什么不再允许使用 'self'?

转载 作者:行者123 更新时间:2023-11-29 10:57:37 25 4
gpt4 key购买 nike

恐怕这是一个愚蠢的问题,但老实说我不明白。

我有一个类,RemoteConfiguration,目前它的功能是所有实例方法。既然如此,我必须像这样使用它:

RemoteConfiguration* configs = [[RemoteConfiguration alloc] init];
[configs updateSettings];
[configs release];

这很烦人,因为没有必要创建一个对象只是为了使用一个方法,它可以是一个类方法并像这样调用:

[RemoteConfiguration updateSettings];

但是,当我将方法从 - 更改为 + 时,Xcode 会提示我使用 self 访问的每个对象,建议我使用 >-> 代替。 (这也会引起警告)我不明白这个。不管方法如何,对象仍然会有它的成员变量。那么为什么 -> 是必要的呢?以及如何在类方法中使用成员变量?

最佳答案

在类方法中,关键字 self 不是指该类类型的实例,而是指实际的 class 实例,如 [RemoteConfiguration 类]

像这样的类实例没有实例变量(至少不是你声明的那些,而是 Class 实例变量,最值得注意的是 isa 实例变量)。

如果您希望拥有RemoteConfiguration 的单个静态实例,您可以在.m 文件中将实例变量声明为static 变量,或使用类似 singleton pattern 的东西保持实例方便。

关于ios - 当我从实例方法更改为类方法时,为什么不再允许使用 'self'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17530856/

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