디버깅 도구를 사용하는 방법을 이해하는 데 도움이 필요합니다.이 주제에 대한 이전 게시물은 NSZombie 사용 및 중단 점 설정을 제안합니다. 이것들은 저를 위해 작동하지 않습니다, 나는 그들을 올바르게 사용하는 방법을 이해하지 못함을 의미합니다 - 또는 그들이 말하는 것을 해석하는 방법. 해제 된 포인터가 할당되지 않았습니다. 어떻게 Xcode objective c에서 디버그합니까?
는 (나는 기본적으로, 진공에서 운영하고있어 - 내 직장이나 사회 원에 아무도 객관적인 C 프로그래밍을하지 않습니다 ...)다음은 잘못된 코드입니다. 내 생각은 100 개의 객체 배열을 움직이는 것입니다. 일상적인 motionDataArray는 motionManager startDeviceMotionUpdatesUsingReferenceFrame 메소드에 의해 호출됩니다. 배열이 채워지면 길이가 100에 도달하면 첫 번째 객체가 제거되므로 항상 배열에 100 개의 객체 만있게됩니다. 이렇게하면 데이터의 평균을 취하고 많은 노이즈를 제거 할 수 있습니다.
(나는이 목표를 달성하기 위해 더 나은 방법이 아마이 상상하지만, 여기에 내가 ... 함께 올 한 것입니다)
- (void) motionDataArray: (CMCalibratedMagneticField) field
{
NSDictionary *motionData = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithDouble: motionManager.deviceMotion.gravity.x],@"gravity_x",
[NSNumber numberWithDouble: motionManager.deviceMotion.gravity.y],@"gravity_y",
[NSNumber numberWithDouble: motionManager.deviceMotion.gravity.z],@"gravity_z",
[NSNumber numberWithDouble: field.field.x],@"mag_x",
[NSNumber numberWithDouble: field.field.y],@"mag_y",
[NSNumber numberWithDouble: field.field.z],@"mag_z",
[NSNumber numberWithDouble: `enter code here`locationManager.heading.magneticHeading],@"mag_heading",
[NSNumber numberWithDouble: motionManager.deviceMotion.attitude.roll],@"roll",
[NSNumber numberWithDouble: motionManager.deviceMotion.attitude.yaw],@"yaw",
[NSNumber numberWithDouble: motionManager.deviceMotion.attitude.pitch],@"roll",
nil];
//NSLog(@"%d",[motionArray count]);
if([timerArray count] > arrayCount - 1)
{
int i = [timerArray count] - arrayCount;
for (int j = 0; j < i + 1; j++)
{
[motionArray removeObjectAtIndex:0];
}
}
[motionArray addObject:motionData];
}
코드는 처음 이백 반복 또는 벌금 실행 그래서 충돌과 오류가 발생합니다 : 해제 된 포인터가 할당되지 않았습니다.
인스 트루먼 트의 출력이나 다른 디버깅 방법론을 해석하는 방법에 대한 좋은 지침은 나에게 큰 도움이 될 것입니다. 그것은 충돌없이 실행하고, 배열은 100를 최대로 유지 - 많은 사전에 감사 ...
팀 레드 필드