gpt4 book ai didi

iphone - 在同一文件中调用返回类型为 "void"的方法

转载 作者:搜寻专家 更新时间:2023-10-30 19:56:55 25 4
gpt4 key购买 nike

我有一个简单的问题。

在 Objective-C 中,当您有一个要调用的方法,返回类型为 void 时,您如何从另一个方法调用它?

我在我的应用程序中一直这样做的方式是这样的:

[self nameOfMethod];

但这会导致 Xcode 吐出以下错误:

Method '-nameOfMethod' not found (return type defaults to 'id')

虽然它似乎还在执行。

我说的对吗,还是有更好的方法?

谢谢!

最佳答案

我猜你还没有在类接口(interface)中声明 -nameOfMethod 并且你正在从另一个方法调用它,该方法的实现先于 -nameOfMethod 的实现,即:

- (void)someMethod {
[self nameOfMethod];
}

- (void)nameOfMethod {
// …
}

当编译器在解析 -someMethod 并且 -nameOfMethod 还没有在类接口(interface)中声明时,它会产生一个警告,因为它不知道 >-nameOfMethod 还没有。

基本上有两种解决方案。您可以重新排序实现文件,使 -nameOfMethod 出现在 -someMethod 之前,但这并不总是可行的。更好的解决方案是在类接口(interface)中声明 -nameOfMethod。如果 -nameOfMethod 应该被您的类的客户端调用,请将其放在相应的头文件中。另一方面,如果 -nameOfMethod 只应在您的实现文件中调用,请使用类扩展。假设您的类名为 SomeClass,这就是您的头文件和实现文件的样子:

// SomeClass.h
@interface SomeClass : NSObject {
// … instance variables
}

// … external methods
- (void)someMethod;
@end

// SomeClass.m
#import "SomeClass.h"

@interface SomeClass () // this is a class extension
// … internal methods
- (void)nameOfMethod;
@end

@implementation SomeClass
- (void)someMethod {
[self nameOfMethod];
}

- (void)nameOfMethod {
// …
}
@end

使用类扩展,方法实现的顺序无关紧要。

关于iphone - 在同一文件中调用返回类型为 "void"的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5615402/

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