[objective-c] Semantisches Problem: Der synthetisierte Getter der Eigenschaft folgt der Cocoa-Namenskonvention für das Zurückgeben von "eigenen" Objekten


Answers

Inakzeptable Objektnamen

  • neuer Knopf
  • KopiereLabel
  • allokTitle

Akzeptable Objektnamen

  • neuer Knopf
  • mCopyLabel
  • _allocTitle

#arc # automatisch synthetisiert # xcode-4.6.1

** BEARBEITEN **

Anscheinend können Sie mutableCopy auch nicht verwenden.

Question

Ich verwende derzeit das iOS 5 SDK, um meine App zu entwickeln. Ich versuche, einen NSString zu einer Eigenschaft zu machen und sie dann in der .m-Datei zu synthetisieren (ich habe dies vorher ohne Probleme getan). Nun bin ich auf folgendes gestoßen: "Semantisches Problem: Der synthetisierte Getter der Eigenschaft folgt der Cocoa-Namenskonvention für das Zurückgeben von" eigenen "Objekten."

Das ist mein Code: .h

@interface ViewController : UIViewController {
     NSString *newTitle;
}
@property (strong, nonatomic) NSString *newTitle;

.m

@synthesize newTitle;

Hat jemand eine Ahnung wie ich das beheben könnte? Vielen Dank!!




ARC erlaubt nicht die Verwendung von "New ...." im Eigenschaftsnamen. Sie können jedoch "newTitle" verwenden, indem Sie den Getter-Namen ändern.

@property (nonatomic, strong, getter=theNewTitle) NSString *newTitle;



Wenn Sie in CoreData "new ..." im Attribut (normal kompilieren) verwenden, stürzt es zufällig mit einer "bad access" -Ausnahme ab.

Es gibt kein Absturzprotokoll und die mit dem "All Exceptions Breakpoint" angezeigte Zeile wird Ihnen überhaupt nicht helfen.




Neben dem Problem, dass Sie vor Ihren Property-Namen "new" nicht verwenden dürfen / dürfen, lassen Sie noch eins sagen: Vermeiden Sie "new" vor Namen im Allgemeinen. "Neu" ist abhängig von der Zeit. Momentan ist es neu für Sie, aber vielleicht möchten Sie später etwas Neues implementieren. Also ist die Verwendung von "neu" in Namen immer schlecht. Versuchen Sie, so zu denken: In der Programmierwelt schafft "neu" immer etwas: eine neue Instanz von etwas.

In Ihrem Fall, wenn Sie einen anderen Titel vergeben möchten, dann den aktuellen Namen Ihre Eigenschaft titleReplacement.

Eine weitere Sache: Versuchen Sie zuerst Funktionen und Methoden mit dem Verb zu benennen, wie setSomething oder getSomething. Aber in Eigenschaften versuchen Sie, das Objekt zuerst zu benennen, wie heightMinimum, heightMaximum usw. -> Wenn Sie Ihren Inspektor beim Codieren verwenden, suchen Sie immer nach Objekten. Versuch es. ;-)




Related