gpt4 book ai didi

iphone - 没有接口(interface)的实例类或方法?

转载 作者:行者123 更新时间:2023-12-01 18:27:39 25 4
gpt4 key购买 nike

得到这个代码:

#import <Foundation/Foundation.h>
@interface CalculatorBrain : NSObject
- (void)pushOperand:(double)operand;
- (double)performOperation:(NSString *)op;
@property (nonatomic, readonly) id program;
+ (NSString *)descriptionOfProgram:(id)program;
+ (double)runProgram:(id)program;
@end

和这个:
#import "CalculatorBrain.h"
@interface CalculatorBrain()
@property (nonatomic, strong) NSMutableArray *programStack;
@end
@implementation CalculatorBrain
@synthesize programStack = _programStack;
- (NSMutableArray *)programStack
{
if (_programStack == nil) _programStack = [[NSMutableArray alloc] init];
return _programStack;
}
- (id)program
{
return [self.programStack copy];
}
+ (NSString *)descriptionOfProgram:(id)program
{
return @"blablabla";
}
- (void)pushOperand:(double)operand
{
[self.programStack addObject:[NSNumber numberWithDouble:operand]];
}

- (double)performOperation:(NSString *)operation
{
[self.programStack addObject:operation];
return [[self class] runProgram:self.program];
}

+ (double)popOperandOffProgramStack:(NSMutableArray *)stack
{
double result = 0;
return result;
}
+ (double)runProgram:(id)program
{
NSMutableArray *stack;
if ([program isKindOfClass:[NSArray class]]) {
stack = [program mutableCopy];
}
return [self popOperandOffProgramStack:stack];
}
@end

代码运行良好,所以问题是,popOperandOffProgramStack 在界面中声明的位置在哪里?为什么它编译并且没关系?它应该崩溃,但我找不到对此的解释....

谢谢!

最佳答案

您只需要在 @interface 中声明方法即可如果您要将它们暴露给世界,请在 .h 文件中。否则,不需要声明。

现在,它们在实现中出现的顺序也无关紧要。从历史上看,如果该方法后来在 @implementation 中实现与调用它的位置相比,您需要在上面声明方法(通常在 @interface 中)。现在编译器不关心 .m 文件中的实现是较早还是较晚。

关于iphone - 没有接口(interface)的实例类或方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11962024/

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