如何在类方法目标C中访问self

Dev*_*evC 3 objective-c class-method ios

我有一个使用类方法的Utility类.我试图在类方法中引用self但不能.我想知道如何在类方法中声明以下内容:

[MRProgressOverlayView showOverlayAddedTo:self.window animated:YES];
Run Code Online (Sandbox Code Playgroud)

self.window 它说会员参考类型 struct objc_class *' is a pointer; maybe you meant to use '->'

与无法调用有关的另一个问题self是我如何@property在我.h的类方法中引用我声明的声明 .m.

这是我的类方法:

.m
+ (void)showHUD
{
    [UIApplication sharedApplication].networkActivityIndicatorVisible=YES;
    [MRProgressOverlayView showOverlayAddedTo:self.window animated:YES];

    //I would preferably like to call my property here instead
}


.h
@property (nonatomic) MRProgress * mrProgress;
Run Code Online (Sandbox Code Playgroud)

Rob*_*ier 10

类方法的重点在于它不是特定实例的一部分.在类方法中,self是类.

如果需要绑定到特定实例,那么它应该是实例方法.如果你想要一个访问特定实例的静态方法,那么将那个实例(self)传递给它(虽然很难想象很多情况下这是有意义的).

在上面的例子中,showHUD几乎可以肯定是一个实例方法.如果由于某种原因这没有意义,那么它应该是:

+ (void)showHUDForWindow:(UIWindow *)window;
Run Code Online (Sandbox Code Playgroud)

然后,您可以将其称为showHUDForWindow:self.window并根据需要使用它.