Declaro mi .h archivo como este:

#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

Y a mi .m archivo como este:

#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;

Todas mis variables en el @synthesize recibir las advertencias:

Autosynthesized propiedad » mivar a usar sintetizado variable de instancia ‘_myVar’, no existente variable de instancia ‘myVar’

También, las variables y los nombres de clase utilizado en viewDidLoad no mostrar en colores, sólo se muestran en color negro. En otro punto de vista de los controladores, no hay advertencias como esta. Cómo solucionar estos problemas?

InformationsquelleAutor HelenWang | 2013-10-21

1 Comentario

  1. 22

    Editar:
    Básicamente, para todos los intentos y propósitos, usted debe ser la construcción de un nuevo suficiente XCode para usar el nuevo comportamiento, en que la solución que normalmente se acaba de quitar la ivar de la @interface bloque en el .h archivo… Si por alguna razón usted no necesita tener acceso a un ivar directamente ahora puede declarar en el @implementation bloque… y el uso @synthesize var o @synthesize var=_var

    OGPost:

    para hacer que desaparecen usted puede ir a todos los de la escuela nueva y la caída de la iVar, o usted puede ir a todos los de la vieja escuela y agregar un @synthesize someIvar en su @implementation bloque.

    • Helen debe probablemente debería hacer el primero, ya que generalmente se considera la mejor práctica en la actualidad. Si esto último, ella lo desea, puede activar la «Implícita Sintetiza las Variables de» advertencia de bajo «Configuración de generación».
    • +1 para la elaboración de una distinción entre todos los nuevos y a todos los de la vieja escuela.
    • creo que @Grady Jugador diciendo que la única forma es quitar todas las declaraciones en la interfaz?
    • es este un nuevo cambio? Quieres decir si quiero hacerlo de esta manera, debería ir a la configuración de generación para hacer «Implícito Sintetizado de la Variable» ¿Sí?
    • Correcto, si vas a explícitamente @synthesize, debe utilizar esa advertencia para asegurarse de que no accidentalmente olvida hacerlo. Pero, francamente, usted debe probablemente nunca @synthesize (y nunca crear manualmente la ivar se utiliza para recuperar la propiedad).
    • es un poco fuerte, algunos de nosotros tenemos que construir en los sistemas que tienen un Xcode que es pre 4.5(?), o cada vez que la función se introdujo, pero es cierto que si usted no sabe por qué elegir uno u otro, entonces usted debe dejar que el compilador haga el trabajo pesado por usted… me gusta explícitamente la declaración de mi ivars, porque me da una buena lista de objetos a la liberación en mi dealloc (algunos de nosotros no recibimos apoyo de ARCO bien).
    • De acuerdo, «nunca» es fuerte. Si necesita compatibilidad con versiones anteriores (por ejemplo, la construcción de una de clase que los usuarios siguen usando los viejos compiladores pueden utilizar), y luego hacerlo, pero a su vez en que la advertencia de que si haces manualmente instanciar, porque se introducen el riesgo de que un menor error tipográfico accidentalmente podría conducir a dos ivars (y yo he respondido a más de una pregunta sobre S,O. donde este fue el origen de los problemas).
    • Lo tengo resuelto mediante la eliminación de «IBOutlet Tipo de dato identificador» desde el bloque de interfaz en el archivo de Encabezado.

Dejar respuesta

Please enter your comment!
Please enter your name here