gpt4 book ai didi

objective-c - 通过 self 调用类方法

转载 作者:太空狗 更新时间:2023-10-30 03:59:54 24 4
gpt4 key购买 nike

我在一个名称很长的类中有一些类方法(确切地说是 TimingConfigController),我经常从类中调用这些方法(例如:[TimingConfigController intervalStringAt:i]),但类名很长这让我很困扰,因为所有内联的语句变得很长而且可读性较差。

我正在阅读以查看是否可以找到速记替代方法,然后我在 developer.apple.com 上看到了这篇文章: Defining a Class

除其他外,它说

id newInstance = [[self alloc] init];

是创建与 self 属于同一类的对象的绝佳方法。据我所知,该语句使用自指针而不是类名调用类方法,所以我在我的应用程序中尝试了它,虽然它可能有效,但它给出了编译器警告。我真的不想收到警告。

那么,我的问题是,使用 self 调用类方法是否可能和/或一个好主意?有没有更好的选择?在 .m 文件的开头执行 #define Self TimingConfigController 对我来说会很糟糕吗?还是我应该吃药并忍受这些烦恼?

最佳答案

self 仅表示类方法中的类。因为类方法的目标是类,所以 self 代表类。

例如,在 + (void)initialize 方法中,通常会看到:

+ (void)initialize {
if (self == [MyClass class]) { // <- self is the current class
// ...
}
}

如果你真的想缩短类名而不重命名它,最简单的解决方案是使用#define语句:

#define TCC TimingConfigController

// The two lines are equivalent
id result1 = [TimingConfigController theClassMethod];
id result1 = [TCC theClassMethod];

关于objective-c - 通过 self 调用类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3060642/

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