2014-05-05 36 views
0

我想找到位于同一行中的两个CGPoint之间的点。我使用斜率和x,p1.xp2.x之间的CGPoints来计算y,并且比我从新的xy制作CGPoint,并最终将它添加到结果数组中。但是我得到了这个错误。[__NSArrayM CGPointValue]:发送到实例的无法识别的选择器

[__NSArrayM CGPointValue]:无法识别的选择发送到实例 0xa08e910 'NSInvalidArgumentException' 的,原因是: ' - [__ NSArrayM CGPointValue]:无法识别的选择发送到实例0xa08e910'

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

CGPoint p5=CGPointMake(158, 339.5); 
CGPoint p6=CGPointMake(156.5, 339.5); 
CGPoint p7=CGPointMake(65.5, 312); 
CGPoint p8=CGPointMake(44.5, 101); 

[pointsinbetween addObject:[NSValue valueWithCGPoint:p5]]; 
[pointsinbetween addObject:[NSValue valueWithCGPoint:p6]]; 
[pointsinbetween addObject:[NSValue valueWithCGPoint:p7]]; 
[pointsinbetween addObject:[NSValue valueWithCGPoint:p8]]; 
NSLog(@"points in between %@",[self extendedarray:pointsinbetween]); 

    } 


-(float)slopeCalculator:(CGPoint)firstpoint params:(CGPoint)secondpoint 
{ 
    float tempx=firstpoint.x-secondpoint.x; 
    float tempy=firstpoint.y-secondpoint.y; 
    if ((tempy>0) && (tempx>0)) { 
     return tempy/tempx; 
    } 
    else{ 
     return 0; 
    } 

} 

-(NSMutableArray*)findpointnewversion:(CGPoint)firstpoint param:(CGPoint)secpoint nextparam:(float)slope 
    { 
     NSMutableArray *pointset=[[NSMutableArray alloc]init]; 
     float y; 
     float j=firstpoint.x+0.5; 
     int inty; 
     while (j< secpoint.x) { 

      y=slope*j-slope*firstpoint.x-firstpoint.y; 
      float fractional=y-truncf(y); 
      if ((y>0) && (slope!=0)) { 
       if (fractional>0.5) { 
        inty=(int)y; 
        inty++; 
        CGPoint ptemp=CGPointMake(j,inty); 
        [pointset addObject:[NSValue valueWithCGPoint:ptemp]]; 
       } 
       else{ 
        inty=(int)y; 
        CGPoint ptemp=CGPointMake(j,inty); 
        [pointset addObject:[NSValue valueWithCGPoint:ptemp]]; 

       } 

      } 
      j=j+0.5; 
     } 
     return pointset; 

} 
-(NSMutableArray*)extendedarray:(NSMutableArray*)param 
{ 
    NSMutableArray *extendset=[[NSMutableArray alloc]init]; 
    int j=0; 
    while (j<=param.count) { 
     CGPoint p1=CGPointFromString([param objectAtIndex:j]); 
     j++; 
     CGPoint p2=CGPointFromString([param objectAtIndex:j]); 
     j++; 
     float slope=[self slopeCalculator:p1 params:p2]; 
     if (p1.x<p2.x) { 
      [extendset addObjectsFromArray:[self findpointnewversion:p1 param:p2 nextparam:slope]]; 
     } else { 
      [extendset addObjectsFromArray:[self findpointnewversion:p2 param:p1 nextparam:slope]]; 
     } 
    } return extendset; 
} 
+2

请发布导致问题的代码,告诉我们确切发生在哪条线上。触发问题是对“CGPointValue”的错误调用。发布的代码永远不会调用“CGPointValue”。 – Tommy

+2

添加一个异常断点,以便您可以看到哪一行导致错误。 – rdelmar

+0

我现在添加了整个代码 – Mina

回答

2

CGPointFromString()斜面工作,因为你的阵列不包含字符串,但NSValue对象

而不是CGPoint p1=CGPointFromString([param objectAtIndex:j]);[params[j] CGPointValue];

相关问题