Beim Versuch, einen CGPoint an eine Methode zu übergeben, wird der Punkt übergeben, aber innerhalb der aufgerufenen Methode zeigen die CGPoint-Werte (inf, inf)? Das Übergeben des CGPoint-Standorts an die createShapeAt-Methode endet also, wenn der Code nicht funktioniert. Vielleicht implementiere ich etwas nicht korrekt oder muss ich den CGPoint kopieren, wenn er übergeben wird?Das Übergeben eines CGPoint an eine andere Methode endet mit (inf, inf)
- (void)handleTap:(UITapGestureRecognizer *)recognizer {
if ([recognizer isKindOfClass:[UITapGestureRecognizer class]])
{
NSLog(@"User just tapped!");
CGPoint location = [recognizer locationInView:recognizer.view];
float scale = [(BasicCanvasUIView *)recognizer.view scale];
location = CGPointMake(location.x/scale, location.y/scale);
[self createShapeAt:location];
}
}
- (void)createShapeAt:(CGPoint)point {
//Create a managed object to store the shape
----------------------------------------------------------------------------
<-- WHEN I GET HERE ON BREAKPOINT THE (point) VARIABLE SHOWS "(inf,inf)" -->
----------------------------------------------------------------------------
NSManagedObject *shape = nil;
//Randomly choose a Circle or a Polygon
int type = arc4random() % 2;
if (type == 0) { // Circle
//Create the circle
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Circle" inManagedObjectContext:self.managedObjectContext];
NSManagedObject *circle = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:self.managedObjectContext];
shape = circle;
//Randomly create a radius and set the attributes of the circle
float radius = 10 + (arc4random() % 90);
[circle setValue:[NSNumber numberWithFloat:point.x] forKey:@"x"];
[circle setValue:[NSNumber numberWithFloat:point.y] forKey:@"y"];
[circle setValue:[NSNumber numberWithFloat:radius] forKey:@"radius"];
} else { // Polygon
//Create the Polygon
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Polygon" inManagedObjectContext:self.managedObjectContext];
NSManagedObject *polygon = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:self.managedObjectContext];
shape = polygon;
//Get the vertices. At this point, no Vertex objects for this shape exist.
//Anything you add to the set, however, will be added to the Vertex entity;
NSMutableSet *vertices =[polygon mutableSetValueForKey:@"vertices"];
//Create a random number of vertices
int nVertices = 3 + (arc4random() % 20);
float angleIncrement = (2 * M_PI)/nVertices;
int index = 0;
for (float i = 0; i < nVertices; i++) {
// Generate random values of each vertex
float a = i * angleIncrement;
float radius = 10 + (arc4random() % 90);
float x = point.x + (radius * cos(a));
float y = point.y + (radius * sin(a));
// Create the Vertex managed object
NSEntityDescription *vertexEntity = [NSEntityDescription entityForName:@"Vertex" inManagedObjectContext:self.managedObjectContext];
NSManagedObject *vertex = [NSEntityDescription insertNewObjectForEntityForName:[vertexEntity name] inManagedObjectContext:self.managedObjectContext];
//Set teh values for the vertex
[vertex setValue:[NSNumber numberWithFloat:x] forKey:@"x"];
[vertex setValue:[NSNumber numberWithFloat:y] forKey:@"y"];
[vertex setValue:[NSNumber numberWithFloat:index++] forKey:@"index"];
//Add the Vertex object to the relationship
[vertices addObject:vertex];
}// ----------------- END IF/ELSE (circle and polygon done) -------------------------------------------------------------------------------------
//Set the shapes color
[shape setValue:[self makeRandomColor] forKey:@"color"];
//Add the same shape to both canvases
[[topView.canvas mutableSetValueForKey:@"shapes"] addObject:shape];
[[bottomView.canvas mutableSetValueForKey:@"shapes"] addObject:shape];
//Save the context
NSError *error = nil;
if (![self.managedObjectContext save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
// Tell the views to repaint themselves
[topView setNeedsDisplay];
[bottomView setNeedsDisplay];
}
}
Haben Sie den Wert überprüft, bevor er übergeben wurde? – lnafziger