Wie kann man die Warnung "Autosynthesized Eigenschaft 'myVar' wird die Verwendung synthetisiert, die Instanz-variable "_myVar', nicht vorhandene Instanz-variable 'myVar' "?
Ich erkläre meine .h-Datei wie folgt:
#import <UIKit/UIKit.h>
@interface NavigationTripViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource>{
NSArray *questionTitleTrip;
NSArray *questionDescTrip;
NSMutableArray *answerTrip;
NSMutableArray *pickerChoices;
int questionInt;
int totalInt;
IBOutlet UILabel *questionNum;
IBOutlet UILabel *questionTotalNum;
IBOutlet UILabel *recordType;
IBOutlet UITextView *questionDes;
IBOutlet UIView *answerView;
IBOutlet UIButton *preButton;
IBOutlet UIButton *nextButton;
UITextField *text;
UIPickerView *picker;
}
@property (retain, nonatomic) NSArray *questionTitleTrip;
@property (retain, nonatomic) NSArray *questionDescTrip;
@property (retain, nonatomic) NSMutableArray *answerTrip;
@property (retain, nonatomic) NSMutableArray *pickerChoices;
@property (retain, nonatomic) IBOutlet UILabel *questionNum;
@property (retain, nonatomic) IBOutlet UILabel *questionTotalNum;
@property (retain, nonatomic) IBOutlet UILabel *recordType;
@property (retain, nonatomic) IBOutlet UITextView *questionDes;
@property (retain, nonatomic) IBOutlet UIView *answerView;
@property (retain, nonatomic) IBOutlet UIButton *preButton;
@property (retain, nonatomic) IBOutlet UIButton *nextButton;
@property (retain, nonatomic) UITextField *text;
@property (retain, nonatomic) UIPickerView *picker;
-(IBAction)clickPre;
-(IBAction)clickNext;
@end
Und meine .m-Datei wie diese hier:
#import "NavigationTripViewController.h"
#import <QuartzCore/QuartzCore.h>
@interface NavigationTripViewController ()
@end
@implementation NavigationTripViewController
@synthesize questionTitleTrip,questionDescTrip,answerTripl,pickerChoices,questionNum,questionTotalNum,recordType,questionDes,answerView,preButton,nextButton,text,picker;
Alle meine Variablen in der @synthesize
erhalten die Warnungen:
Autosynthesized Eigenschaft 'myVar' wird die Verwendung synthetisiert, die Instanz-variable "_myVar', nicht vorhandene Instanz-variable 'myVar'
Auch, die Variablen-und Klassennamen verwendet in viewDidLoad
keine Anzeige in Farben, in schwarz Farbe. In anderen view-Controller, es sind keine Warnungen wie diese. Wie diese Probleme zu beheben?
- Warum sind Sie zu synthetisieren und zu erklären, Ihre ivars?
- Ich könnte darauf hindeuten, zu beobachten WWDC 2012 video Moderne Objective-C, die Gespräche über nicht mehr benötigen, explizit zu erklären, ivars, dass Ihre Eigenschaften so gut wie gar nicht benötigen, um explizit
@synthesize
mehr. - bedeuten, zu entfernen alle Deklarationen im interface und Aussagen synthetisieren?
- Die beste Praxis ist es nicht zu erklären, den Rückhalt ivars oder verwenden Sie
@synthesize
. Nur deklarieren Sie öffentliche@property
Variablen in Ihrem.h
, setzen Sie Ihre privaten Kosten in die Klasse Erweiterung an der Spitze Ihrer.m
- Datei. Keine Notwendigkeit zu@synthesize
mehr. - möglich, Duplikat der Autosynthesized Eigenschaft 'delegieren' verwenden synthetisiert Instanz-variable "_delegate', nicht vorhandene Instanz-variable 'Delegat'
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bearbeiten:
Im Grunde für alle Absichten und Zwecke, Sie sollten Gebäude auf eine neue genug XCode zu verwenden, das neue Verhalten, die Lösung, die Sie in der Regel entfernen Sie einfach das ivar aus der
@interface
block in der.h
Datei... Wenn aus irgendeinem Grund Sie tun müssen, um Zugriff auf eine ivar direkt können Sie jetzt erklären, es in der@implementation
block... und verwenden Sie@synthesize var
oder@synthesize var=_var
OGPost:
machen, die gehen Weg können Sie alle gehen, neue Schule-und-drop die iVar, oder Sie können gehen alle old-school und fügen Sie eine
@synthesize someIvar
in Ihrem@implementation
block.@synthesize
verwenden, sollten Sie diese Warnung, um sicherzustellen, dass Sie nicht versehentlich vergessen, dies zu tun. Aber ehrlich gesagt, sollten Sie wahrscheinlich nie@synthesize
(und nie manuell erstellen ivar eingesetzt, um die Eigenschaft).