Gal*_*Gal 4 iphone static objective-c
如何从同一对象中的静态方法调用非静态方法?
在静态方法内部:如果我使用[ClassName nonStaticMethod]
Or如果我使用[self nonStaticMethod]
我得到警告:未找到类方法'+ isTrancparentImageWithUrl:'(返回类型默认为'id')
一个解决方案(并且极具争议性)的解决方案是将您的类转换为单例实现,然后将所有静态方法转换为常规方法.
EG如果你有一个名为FileManager的类,那里有一个看起来像的方法
+ (NSString *) getDocumentsDirectory
Run Code Online (Sandbox Code Playgroud)
无论出于何种原因,你想从内部调用非静态方法,你需要将实现更改为类似的东西
+ (FileManager *)sharedInstance {
// Singleton implementation
static FileManager* instance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[FileManager alloc] init];
});
return instance;
}
- (NSString *) getDocumentsDirectory
Run Code Online (Sandbox Code Playgroud)
而不是打电话
[FileManager getDocumentsDirectory];
Run Code Online (Sandbox Code Playgroud)
你会打电话
[[FileManager sharedInstance] getDocumentsDirectory];
Run Code Online (Sandbox Code Playgroud)
有几个原因可以解释为什么你不想创建一个单例,但这超出了我的响应范围:).