obj-c에서 float 매개 변수를 전달하려고하면 매우 이상한 문제가 발생합니다. 내가 디버거, 부동 소수점을 통해이 프로그램을 실행할 때float를 전달하면 가비지 값이 발생합니다.
- (void)presetChanged:(NSNotification*)notification {
float newValue = [[S76PresetManager sharedManager] getValueForKey:symbol];
[self setValue:newValue animated:YES];
[PdBase sendFloat:newValue toReceiver:symbol];
}
은 (예를 들어 0.5)가 동일하게 유지되고 전송받을 :
가 나는 NSNotification를 통해 호출하는 방법이 [PdBase sendFloat을 :] 선. 그러나 [self setValue : animated :] 호출에서 쓰레기 값은 3.68934881e + 19가됩니다. 이것은 매우 이상합니다. 어떤 제안? 당신은 때로 믿을 가정하면, 또 다른 방법으로 전송하기 전에 확인 어떤 경계를하고 ...
- (void)setValue:(float)newValue animated:(BOOL)animated {
float oldValue = value;
if (newValue < 0.0)
value = 0.0;
else if (newValue > maxValue)
value = maxValue;
else
value = newValue;
[self valueDidChangeFrom:oldValue to:value animated:animated];
}
그리고 setValue 호출은 어떻게 생겼습니까? – Goz
setValue에 대한 메서드 정의를 표시 할 수 있습니까? : animated :? – bizsytes
헤더 파일은 어떨까요? (헤더에 선언되지 않았고 setValue : animated : 메소드가 나중에 presetChanged보다 소스에있는 경우 : 시그니처가 id의 인수 유형으로 기본 설정되므로 인수를 mangle 할 수 있습니다. 컴파일러에서 사용자에게 경고해야하지만 케이스 ...) –