Objective c 为什么不是';是否在头文件中声明了该变量?

Objective c 为什么不是';是否在头文件中声明了该变量?,objective-c,Objective C,根据斯坦福大学2010/2011秋季目标C课程,第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;

根据斯坦福大学2010/2011秋季目标C课程,第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
typedef结构{
浮动x;
浮动y;
}点;
@接口炸弹
@属性点位置;
@结束
@接口船:车辆{
浮动宽度、高度;
点中心;
}
@属性浮动宽度;
@属性浮动高度;
@物业点中心;
-(BOOL)getsHitByBomb:(炸弹*)炸弹;
@结束
@执行船
@综合宽度、高度、中心;
-(BOOL)getsHitByBomb:(炸弹*)炸弹
{
浮动左边缘=self.center.x-self.width/2;
浮动右边缘=。。。;
返回((bomb.position.x>=leftEdge)&&
(bomb.position.x=上边缘)&&

(bomb.position.y
leftEdge
rightEdge
不在界面中,因为它们是局部变量。它们仅在该函数中需要

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


仅当需要将变量作为接口(类)所表示对象的一部分时,才在接口(类)上放置变量。例如:如果您的接口表示车辆,则
numberOfWheels
可能是接口(类)变量。当您只需要某个范围内的变量(函数)进行临时计算时(如您的示例中的
leftEdge
rightEdge
),那么您只需要一个局部变量。

局部变量和成员变量之间存在差异。成员变量是“全局的”可以从任何实例方法引用,因为它们是接口的一部分。
leftEdge
rightEdge
都是局部变量,都在
getsHitByBomb:
方法中声明。一旦方法返回/退出,它们就超出范围。

可以通过指定哪些变量确实是在界面上写的?@TheNavigator:更新了我的答案,并做了一些澄清。希望能有所帮助。祝你好运!嘿嘿,你偷了Ryan的记号:P好的,非常感谢。这更清楚了:)你在返回的情况下是正确的。如果所有的“&&”都被“| |”替换,那么如果其中任何一个条件为真,它将返回真。“&&”确保只有在所有条件都为真时它才会返回真(在本例中,这意味着炸弹击中了船)。这更容易理解。谢谢你Ryan,你为我解决了它:)