gpt4 book ai didi

iphone - 从 Objective C 的静态方法调用非静态方法

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

如何从同一对象中的静态方法调用非静态方法?

静态方法内部:如果我使用 [ClassName nonStaticMethod]或者如果我使用 [self nonStaticMethod]我收到警告:找不到类方法“+isTrancparentImageWithUrl:”(返回类型默认为“id”)

最佳答案

一个解决方案(也是极具争议的)解决方案是将您的类转换为单例实现,然后将所有静态方法转换为常规方法。

EG,如果你有一个名为 FileManager 的类,并且其中有一个看起来像这样的方法

+ (NSString *) getDocumentsDirectory

无论出于何种原因,您想从内部调用一个非静态方法,您都需要将您的实现更改为如下所示

+ (FileManager *)sharedInstance {
// Singleton implementation
static FileManager* instance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[FileManager alloc] init];
});
return instance;
}

- (NSString *) getDocumentsDirectory

而不是调用

[FileManager getDocumentsDirectory]; 

你会打电话

[[FileManager sharedInstance] getDocumentsDirectory];

关于您不想创建单例的原因有多种,但这超出了我的回复范围:)。

关于iphone - 从 Objective C 的静态方法调用非静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10602628/

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