2014-03-27 91 views
0

我有一個函數,它對NSMutableArray執行一些數組操作。不知何故,在while函數的幾個循環之後,2個局部變量中的值是總垃圾。他們沒有被分配或操縱任何地方。具體方法如下:本地整數值在循環內隨機更改

enter image description here

這裏的功能:

-(void) normalize_path:(NSMutableArray *)path tool:(Tool)tool 
{ 
    NSUInteger last_accepted_point_index = 0; 
    NSUInteger current_point_index = 1; 

    while(current_point_index < [path count]){ 

     VPoint * p1, * p2; 
     [[path objectAtIndex:last_accepted_point_index] getValue:&p1]; 
     [[path objectAtIndex:current_point_index] getValue:&p2]; 

     //float distance = [self distance_between:p1 and:p2]; 

//  if(distance < MIN_POINT_DISTANCE){ 
//   [path removeObjectAtIndex:current_point_index]; 
//  }else{ 
//   float opacity = tool.max_opacity - distance * tool.opacity_sensitivity; 
//   opacity = opacity <= tool.min_opacity ? tool.min_opacity : opacity; 
//   p2->opacity = opacity; 
//   float thickness = tool.max_thickness - distance * tool.thickness_sensitivity; 
//   thickness = thickness <= tool.min_thickness ? tool.min_thickness : thickness; 
//   p2->thickness = thickness; 
//   last_accepted_point_index = current_point_index; 
//   //current_point_index++; 
//  } 
    } 
} 

,這就是所謂只在一個地方像這樣:

//... 
[self normalize_path:opath tool:pen]; 
//... 

每次運行時產生不同的值。我很困惑!這裏發生了什麼?

回答

1

我認爲這可能是內存的問題,你可以通過在getValue:呼叫去除在p1p2前面的&修復。這是很難完全確定,你還沒說什麼VPoint是,但通常這個代碼是這樣的:

VPoint p1, p2; 
    [[path objectAtIndex:last_accepted_point_index] getValue:&p1]; 
    [[path objectAtIndex:current_point_index] getValue:&p2]; 

這將然後設置p1p2實際值。然後,您的函數之間的距離不會採取引用,但P1和P2(如果你想通過你現在正在做參考,你就會把&在遠處callBetween方法調用p1p2前的實際值。

+0

當然!有時它只是隧道視覺,非常感謝 –

+0

當它不是你的代碼/剛編寫的代碼時,發現這些東西總是更容易! –