gpt4 book ai didi

objective-c - 类方法有类似 self 的东西吗?

转载 作者:太空狗 更新时间:2023-10-30 03:20:16 26 4
gpt4 key购买 nike

我试图在 Obj-C 中编写一段类似 ActiveRecord 的代码,遇到了以下情况:我试图在基类中创建一个静态类变量,该变量获取继承类的名称并将其转换为具有复数形式和一些其他格式化操作的表名。我知道对于一个类的实例,可以按照以下方式做一些事情:

tableName = [[[self class] description] stringToTableName];

但是,这需要使用self。是否可以按照以下方式做某事?

tableName = [[[inheriting_class class] description] stringToTableName];

我只是不想为每个继承类对象的实例重新计算表名。我还希望让这段代码使用 ruby​​ 风格的元编程自动生成表名。

最佳答案

只需使用[self class]!当您在 Objective-C 中调用类方法时,self 将指示调用的是哪个类。例如:

#import <Foundation/Foundation.h>
#import <stdio.h>

@interface A: NSObject
+ (void)foo;
@end

@implementation A
+ (void)foo {
printf("%s called!", [[[self class] description] UTF8String]);
}
@end

@interface B: A @end
@implementation B @end

int main()
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[A foo];
[B foo];
[pool release];
return 0;
}

应该打印

A called!
B called!

关于objective-c - 类方法有类似 self 的东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4150574/

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