Frage

In Objective-C, gibt es Möglichkeiten, um anzuzeigen, dass ein NSNumber * soll eigentlich ein BOOL sein? Gerade jetzt mein Code wie folgt aussieht:

NSNumber *audio; // BOOL wrapper

Ohne Kommentar, ist es nicht sofort klar, dass * Audio ein Boolescher Wert ist.

Mein erster Gedanke war, versuchen

typedef NSNumber* BOOL;

, aber das gab einen Compiler-Fehler offenbar weil typedef nicht Objective-C nicht versteht.

Ohne die Variablennamen zu ändern (was schwierig ist, wenn vorhandene APIs), wie soll ich zeigen, dass ein NSNumber * einen Booleschen Wert hält?

War es hilfreich?

Lösung

Der Code:

typedef NSNumber* BOOL;

nicht kompiliert, da BOOL ist bereits ein typedef, und es ist kein typedef neu zu definieren, erlaubt.

So können Sie einen anderen Namen für diese Art verwenden können, z.

typedef NSNumber NSNumberBool;
NSNumberBool *audio;

Oder wohl besser, nennen Sie die Variable, so dass Sie wissen, dass es ein NSNumber ist und enthält eine Bool, auf diese Weise Sie nicht einmal brauchen, um für den Variablentyp gehen aussehen:

NSNumber *audioNumberBool;
...
[audioNumberBool boolValue];

Andere Tipps

Offensichtlich ist die beste Lösung ist, die Eigenschaft umbenennen etwas wie isAudio oder hasAudio zu sein. Aber wenn Sie es nicht tun, dann eine mittelmäßige Lösung ist die typedef wie Sie beschreiben. Die typedef Sie beschreiben, schlägt fehl, da BOOL bereits in Objective C in objc.h definiert ist:

typedef signed char BOOL; 

neben dem, das wäre verwirrend, da es nicht seine ein NSNumber anzeigt tatsächlich und nicht nur ein Bool / int. Ich würde vorschlagen, so etwas wie:

typedef NSNumber NSNumberBool;

oder vielleicht in diesem Fall besser wäre:

#define NSNumberBool NSNumber

und dann verwenden:

NSNumberBool *audio;

oder einfach nur einen Kommentar verwenden, wie Sie getan haben.

Der beste Weg wäre, die Variable audioBool oder etwas zu nennen, die einen Booleschen Wert bedeutet. Die Kommentare sind gut und alles, aber manchmal können sie übersehen oder einfach nicht lesen.

Wenn Sie ein Problem mit Umbenennen von vielen Variablen haben, können Sie Xcode Refactoring-Tool verwenden. Einfach mit der rechten Maustaste (oder cmd + Klick) auf den Variablennamen, wählen Sie die Umgestalten ... Option und dann die Variable umbenennen. Hit Vorschau, und Xcode zeigen Ihnen, was es ist, sich zu verändern. Wenn Sie mögen, was Sie sehen, gehen Sie vor und gelten, wenn nicht, abzubrechen.

Xcode finden Sie auch die Möglichkeit, einen Schnappschuss zu machen, bevor zu einem Refactoring Betrieb zu begehen. Dies ist standardmäßig aktiviert. Also, wenn etwas schief geht, können Sie einfach rückgängig zu machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top