0

你好我有一个问题。我希望有人可以帮助我。我不明白……我有一个方法 returnPointFromArray,其中我有一个包含值的数组(例如 50.0、100.0)。比我想随机它,然后我想使用方法 drawObjectWithPoint 中的 CGPoint p 来用随机值定位我的对象(来自另一个类的对象)。

但是 drawObjectWithPoint 方法总是说 CGPoint p ist 0.0, 0,0 或者他说“使用未声明的标识符p或“实例变量隐藏......”。

我尝试了相同的原理来测试 int 并且这有效。

我不知道我做错了什么。

如果有人可以帮助我并解释我做错了什么,那就太好了。

非常感谢。

.h
-(void)returnPointFromArray;
-(void)drawObjectWithPoint;


.m
-(void)returnPointFromArray
{
    NSArray *points = [];

    //Random for points

     NSUInteger *randomIndex = arc4random() % [points count];

     NSValue *val = [points objectAtIndex:randomIndex];
     CGPoint p = [val CGPointValue];
}

-(void)drawObjectWithPoint
{
    Object *myObject [[Object alloc]init];
    CGPoint pNew = p;
    myObject.position = 
    [self addChild:myObject];
}
4

4 回答 4

1

通过方法调用直接赋值

-(void)drawObjectWithPoint
{
    Object *myObject [[Object alloc]init];
    myObject.position = [self returnPointFromArray];
    [self addChild:myObject];
}

-(CGPoint)returnPointFromArray  {
    NSArray *points = [];

    //Random for points

     NSUInteger *randomIndex = arc4random() % [points count];

     NSValue *val = [points objectAtIndex:randomIndex];
     return [val CGPointValue]; 
}
于 2013-05-15T07:16:43.903 回答
1

您可以这样做: 已编辑:(这是您在 .h 文件中声明的方式)

在 .h 文件中

#import <UIKit/UIKit.h>

@interface MyClass : UIViewController {
    CGPoint p;
}
-(void)returnPointFromArray;
-(void)drawObjectWithPoint;
@end

在 .m 文件中

-(void)returnPointFromArray  {
    NSArray *points = [];

    //Random for points

     NSUInteger *randomIndex = arc4random() % [points count];

     NSValue *val = [points objectAtIndex:randomIndex];
     p = [val CGPointValue]; // change here
}

-(void)drawObjectWithPoint  {
    Object *myObject [[Object alloc]init];
    CGPoint pNew = p;
    myObject.position = 
    [self addChild:myObject];
}
于 2013-05-15T07:06:19.333 回答
0

刚刚CGPoint p;在 .h 文件中声明。您将其声明为 local( returnPointFromArrayfunction) 意味着它的范围仅对该函数是本地的。检查here 以供参考。

于 2013-05-15T07:07:19.600 回答
0

您的 returnPointFromArray 方法返回 void - 只需修改它 -

-(CGPoint)returnPointFromArray
{
    // your code

    return p;
}

然后在你想用 p 的地方写

CGPoint pNew = [self returnPointFromArray];

显然你必须添加实际使用这个值的代码——你的代码根本不这样做——

myObject.position = pNew;
于 2013-05-15T07:23:22.720 回答