gpt4 book ai didi

objective-c - 为什么不在头文件中声明该变量?

转载 作者:行者123 更新时间:2023-12-02 07:07:22 24 4
gpt4 key购买 nike

根据斯坦福大学 Objective-C 类(class) 2010/2011 秋季,第 3 课:

typedef struct {
float x;
float y;
} Point;

@interface Bomb
@property Point position;
@end

@interface Ship : Vehicle {
float width, height;
Point center;
}

@property float width;
@property float height;
@property Point center;
- (BOOL)getsHitByBomb:(Bomb *)bomb;
@end

@implementation Ship

@synthesize width, height, center;

- (BOOL)getsHitByBomb:(Bomb *)bomb
{
float leftEdge = self.center.x - self.width/2;
float rightEdge = ...;

return ((bomb.position.x >= leftEdge) &&
(bomb.position.x <= rightEdge) &&
(bomb.position.y >= topEdge) &&
(bomb.position.y <= bottomEdge));

}

@end

为什么界面上不 float leftEdge和 float rightEdge?

此外,返回大小写,这意味着如果所有这些情况都是正确的,则返回 YES,如果不正确则返回 NO(如果情况为真则为 1,如果为假则为 0)。对吧?

最佳答案

leftEdgerightEdge 不在界面中,因为它们是局部变量。它们在该功能中需要。

关于你的第二个问题,你是对的。确实如此。

只有在需要使变量成为由它表示的对象的一部分时,才将变量放在接口(interface)(类)上。示例:如果您的界面代表车辆,那么 numberOfWheels 可能是一个界面(类)变量。当您只需要某个范围内的变量(函数)进行临时计算时(例如 leftEdgerightEdge 在您的示例中)那么您只需要一个局部变量.

关于objective-c - 为什么不在头文件中声明该变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9640394/

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