从Xcode中的单独类访问变量

时间:2013-12-19 17:38:53

标签: objective-c

我的代码有一个AppDelegate,一个视图控制器,一个主视图,以及一个名为Sprite.h和Sprite.m的独立类。我的mainview.m有

 if (!eye) {
     eye = [[Sprite alloc] initWithPic: @"eye1.png"
         frameCnt: 1
         frameStep: 1
         speed: CGPointMake(-5, 5)
         pos: CGPointMake(300, 400)];
   }

调用sprite类并让它创建一个以各种随机方向在屏幕上飞行的对象。我需要做到这一点,如果它的位置击中玩家位置然后他死了,但是玩家位置的变量在主视图中

有没有办法在sprite.m中与主视图共享眼睛的位置?m?

2 个答案:

答案 0 :(得分:0)

通过在Sprite.h中声明变量,使变量成为Sprite clas中的属性。然后,由于您在主视图中有Sprite的实例,因此您可以将其引用为eye.location

答案 1 :(得分:0)

您的MainView.m是具有子级称为单独类(Sprite.m)的父级。如果你想从Sprite.m获取变量。您应该为sprite类声明委托如下:

@class Sprite;

@protocol SpriteDelegate
-(void)sprite:(Sprite*)sprite location:(CGPoint*)point;

@interface Sprite: UIView<...>{
    CGPoint* point;
    //Your variables ...
}

@property (assign) id <SpriteDelegate> delegate;
//others property ...
@end

在你的sprite.m

-(void)updatePoint{ //your function when you want to send your point to mainview
     [self.delegate sprite:self location:yourPoint];
}

在mainview.h中,您应该添加委托

@interface MainView: UIView<SpriteDelegate>

在你的mainview.m中:

if (!eye) { 
    eye = [[Sprite alloc] initWithPic: @"eye1.png" frameCnt: 1 frameStep: 1 speed: CGPointMake(-5, 5) pos: CGPointMake(300, 400)]; 
    eye.delegate = self;
}

-(void)sprite:(Sprite*)sprite location:(CGPoint*)point{
     //Do with your point your received
}