Возможно ли создать массив CGPoint в объекте-C, я пишу этот код, но это приводит к ошибке!От NSMultableArray до CGPoint
NSMultableArray *result=[[NSMultableArray alloc]initWithCapacity:10];
CGPoint temp=[Self GetPoint];
result[0]=temp; //Error !!
Возможно ли создать массив CGPoint в объекте-C, я пишу этот код, но это приводит к ошибке!От NSMultableArray до CGPoint
NSMultableArray *result=[[NSMultableArray alloc]initWithCapacity:10];
CGPoint temp=[Self GetPoint];
result[0]=temp; //Error !!
Да, вам нужно вставить CGPoint
с в пределах NSValue
объектов, примерно таких:
NSMutableArray *arr = [[NSMutableArray alloc] init];
NSValue *val1 = [NSValue valueWithCGPoint:cgpoint1];
[arr addObject:val1];
// etc.
для извлечения CGPoint
с, используйте:
for (NSValue *value in arr) {
CGPoint cgpoint = value.pointValue;
// Use point
}
Вот link к NSValue UIKit Дополнения Class Reference.
Нет, вы не можете хранить CGPoint
в массиве. В массиве хранятся объекты типов указателей. Вы должны завернутые CGPoint
в NSValue
затем сохранить его в массиве ..
NSMultableArray *result=[[NSMultableArray alloc]initWithCapacity:10];
NSValue *pointvalue = [NSValue valueWithCGPoint:CGPointMake(x, y)];
[result addObject:pointvalue];
На время извлечения
CGPoint *myPoint = [[result objectAtIndex:indexValue] CGPointValue];
Также вы можете обернуть другой тип структуры слишком https://developer.apple.com/library/ios/documentation/uikit/reference/NSValue_UIKit_Additions/Reference/Reference.html
Вы можете сделать это [result addObject:[NSValue valueWithCGPoint:player.center]];
и расшифровывать, как показано ниже
CGPoint point = [(NSValue *)[result objectAtIndex:0] CGPointValue];
CGPoint является типом структуры, и вы можете хранить только Objective-C объекты в изменяемый массив. Лучший способ сделать это, чтобы обернуть его с этим NSValue нравится так [NSValue valueWithCGPoint:temp]
Аналогичный вопрос здесь: For iPad/iPhone apps, how to have an array of points?