私はObjective-Cを初めて使用します。おそらく、ばかげた間違いを犯しているように感じますが、運が悪かったのでこれをグーグルで検索してみました(おそらく、正しいものを検索していないだけです)。
基本的に、私は独自のオブジェクトクラスを作成し、それをいくつかインスタンス化しようとしましたが、データは一緒にロックされているようです。1つの参照のデータを変更すると、すべての参照のデータが変更されます。
ここでオブジェクトを作成して使用します。
@implementation Drawing
//leaving many functions out as they are not part of the problem
Ball * balls[10];
int numPoints;
//this gets called first
- (id) initWithCoder: (NSCoder *)aDecoder
{
//leaving out loading of images.....
numPoints=10;
for(int i=0; i<10; i++){
balls[i]=[[Ball alloc] init];
printf("bmem: %p\n",%balls[i]);
float tpx=arc4random()%1024;
float tpy=arc4random()%768;
printf("randX: %f\n",tpx);
printf("randY: %f\n",tpy);
CGPoint tempPt = CGPointMake(tpx,tpy);
printf("mem: %p\n",%tempPt);
[balls[i] setLocation:tempPt];
}
//code to start a timer on the drawRect function....
}
//called regularly, every 30 seconds
- (void) drawRect:(CGRect)rect
{
CGContextRef c=UIGraphicsGetCurrentContext();
CGContextClearRect(c, rect);
for(int i=0; i<numPoints; i++)
{
int ptX=[balls[i] getX];
int ptY=[balls[i] getY];
printf("index: %d\n",i);
printf("x: %d\n",ptX);
printf("y: %d\n",ptY);
CGContextDrawImage(c, CGRectMake((int)ptX-WIDTH/2, (int)ptY-WIDTH/2, WIDTH, HEIGHT), image);
}
}
このプログラムは、私が役立つと思った一連の数値を出力します。-「bmem」、つまりボールがあるメモリ内のポイントは、予想どおり、一定の間隔で増分します。-「randX」と「randY」は完全にランダムです。-「mem」、つまりCGPointのメモリ内のポイントは変更されません
これはボールオブジェクトです:
@implementation Ball
int x;
int y;
-(void)setLocation:(CGPoint)loc{
x=loc.x;
y=loc.y;
}
-(int)getX{
return x;
}
-(int)getY{
return y;
}
@end
最初はBallクラスに静的属性がありましたが、グーグルで操作すると、objective-cに静的属性がないことがわかりました。私はやみくもに十数種類のことを試しましたが、成功しませんでした。私は本当にこれが機能する必要があります。