“‘这个’的使用无效”在非成员函数中”在 Objective-C 环境中?

发布于 2024-12-06 15:00:22 字数 212 浏览 2 评论 0原文

使用 Xcode。

在此代码中(func 在接口中声明),告诉 subj 错误,用“self”站在字符串上。

+ (void) run: (Action) action after: (int) seconds 
{
    [self run:action after:seconds repeat:NO];
}

什么……?

Using Xcode.

In this code (func is declared in interface), tells subj error, standing on string with 'self'.

+ (void) run: (Action) action after: (int) seconds 
{
    [self run:action after:seconds repeat:NO];
}

What the... ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

葬シ愛 2024-12-13 15:00:22

self 是一个实例变量,用于引用当前对象的实例。

您正尝试在类级别方法+(void)...中使用它,其中self没有任何意义。尝试使用共享实例,或将相关类的实例传递给该方法。

+ (void) run:(Action)action on:(MyClass*) instance after:(int) seconds
{ 
    [instance run:action after:seconds repeat:NO];
}

编辑

我的评论者指出 self 在类级别上下文中确实有意义,但它指的是类本身。这意味着您试图调用如下所示的方法:

 [MyClass run:action after:seconds repeat:NO];

您的目标应该是:

 [myClassInstance run:action after:seconds repeat:NO];

self is an instance variable used to refer to an instance of the current object.

You are attempting to use it in a class level method +(void)... where self has no meaning. Try using a shared instance, or passing an instance of the class in question to the method.

+ (void) run:(Action)action on:(MyClass*) instance after:(int) seconds
{ 
    [instance run:action after:seconds repeat:NO];
}

EDIT

My commenters have pointed out that self does have meaning in class level contexts, but it refers to the class itself. That would mean you were trying to call a method that looks like this:

 [MyClass run:action after:seconds repeat:NO];

Where you should be aiming for:

 [myClassInstance run:action after:seconds repeat:NO];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文