Hex w stringWithFormat BAD ACCESS
Oto część mojego kodu:
Mam ciąg, który jest utworzony przez stringWithFormat w następujący sposób:
<code>NSString * DestChoice = [NSString stringWithFormat:@"%@", Dest1String]; </code>
Ciąg Dest1String jest taki:
<code>NSString * Dest1String = [NSString stringWithFormat:@"%lX", [Dest1OutField integerValue]]; </code>
Dest1OutField to pole NSTextField
Kiedy umieściłem „10” w moim polu tekstowym, ciąg DestChoice kończy się „A”, więc mój kod działa. Kiedy umieściłem „11” w moim polu tekstowym, ciąg DestChoice spowoduje „B”, to też jest dobre. Ale jeśli wstawisz „31”, powinienem uzyskać „1F”, ale mam awarię „EXC_BAD_ACCESS” ...
Nie rozumiem ... Jeśli ktoś może zapalić moją drogę ... :)
Z wyprzedzeniem!
EDYTOWAĆ:
Zawsze jestem utknięty ... Zmodyfikowałem mój kod, aby był „bardziej zrozumiały” i podaję ci dokładny kod, którego używam, a nie próbki:
Więc tworzę dwa takie ciągi:
<code>DestChoice = [NSString stringWithFormat:@"%lX", [DestField integerValue]]; SourceChoice = [NSString stringWithFormat:@"%lX", [SourceField integerValue]]; </code>
Tak więc użytkownik zapisuje wartość źródłową / docelową w wartości dziesiętnej, ale są one przechowywane w postaci szesnastkowej w łańcuchu, a następnie mam przycisk, który formatuje źródło i cel w ten sposób:
<code>NSString * CommandReadyToSend = [NSString stringWithFormat:@"X:0/%@,%@\r", DestChoice, SourceChoice]; </code>
Mój kod działa, ALE, dziwnie niektóre wartości tworzą EXC_BAD_ACCESS w części CommandReadyToSend ... Przykład: jeśli piszę 1 w moim polu tekstowym => Otrzymuję 1 (wartość szesnastkowa) w wyniku DestChoice Jeśli piszę 10 w moim tekście field => Otrzymuję A w DestChoice
ALE Jeśli piszę 31 w polu tekstowym, powinienem uzyskać 1F, ale otrzymuję EXC_BAD_ACCESS ... To samo z 29 (wartość dec)