инициализация с nibFIle не удалась - PullRequest
0 голосов
/ 29 мая 2010

У меня проблема. Я пытаюсь инициализировать переменную в classViewController, созданный внутри файла XIB. Я пытаюсь с кодом ниже, но когда я добавляю объект в массив, эти массивы не инициализируются. Вы можете мне помочь? спасибо и извините за мой английский.

#import <UIKit/UIKit.h>

@interface AccelerometroViewController : UIViewController <UIAccelerometerDelegate, UITextFieldDelegate, UIAlertViewDelegate>{

    //.....     

    NSMutableArray *arrayPosizioni;
    NSMutableArray *arrayPosizioniCorrenti;

    NSString *nomePosizioneCorrente;

}

-(IBAction)salvaPosizione;


//...
@property (nonatomic, assign)   NSMutableArray      *arrayPosizioni;
@property (nonatomic, assign)   NSMutableArray      *arrayPosizioniCorrenti;

@property (nonatomic, assign)   NSString      *nomePosizioneCorrente;

@end



#import "AccelerometroViewController.h"
#import "Position.h"

@implementation AccelerometroViewController



float actualX;
float actualY;
float actualZ;


@synthesize arrayPosition;
@synthesize arrayCurrentPosition;

@synthesize nameCurrentPosition;

    -(id)init {
        self = [super init];
        if (self != nil) {
            arrayPosition = [[NSMutableArray alloc]init];
            arrayCurrentPosition = [[NSMutableArray alloc]init];
            nameCurrentPosition = [NSString stringWithFormat:@"noPosition"]; 
            actualX = 0;
            actualY = 0;
            actualZ = 0;
        }
        return self;
    }


    -(void)updateTextView:(NSString*)nomePosizione
    {
        NSString *string = [NSString stringWithFormat:@"%@", nameCurrentPosition];
        textEvent.text = [textEvent.text        stringByAppendingString:@"\n"];
        textEvent.text = [textEvent.text        stringByAppendingString:string];
    }


    -(IBAction)savePosition{

        Posizione *newPosition;
        newPosition = [[Position alloc]init];

        if([newPosition     setValue:(NSString*)fieldNomePosizione.text:(float)actualX:(float)actualY:(float)actualZ]){
       //setValue is a method of Position. I'm sure that this method is correct
            UIAlertView *alert = [[UIAlertView  alloc] initWithTitle:@"Salvataggio Posizione" message:@"Posizione salvata con successo" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil];
            [alert  show];
            [alert  release];           
            [arrayPosition  addObject:newPosition];
        }
        else{
            UIAlertView *alert = [[UIAlertView  alloc] initWithTitle:@"Salvataggio osizione" message:@"Errore nel salvataggio" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil];
            [alert show];
            [alert release];
        }
   }

 - (void) initialise {
     arrayPosition = [[NSMutableArray alloc] init];
     arrayCurrentPosition = [[NSMutableArray alloc] init];
     nameCurrentPosition = @"noPosition"; 
     actualX = 0;
     actualY = 0;
     actualZ = 0;
 }

 - (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle {
     if (self = [super initWithNibName:nibName bundle:bundle]) {
         [self initialise];
     }
} 

1 Ответ

0 голосов
/ 29 мая 2010

В дополнение к комментарию Феликса, касающемуся неправильного именования, ваши свойства также неверны. Объекты должны быть сохранены или скопированы, а не назначены (в большинстве случаев), чтобы вы были уверены, что их ценность не исчезнет. Вы должны владеть ими. В качестве такового я бы использовал следующее:

@property (nonatomic, readwrite, retain)   NSMutableArray *arrayPosition;
@property (nonatomic, readwrite, retain)   NSMutableArray *arrayCurrentPosition;
@property (nonatomic, readwrite, copy)   NSString *nameCurrentPosition;

Тогда, поскольку вы сохранили что-то, вы несете ответственность за его освобождение. Для этого вам понадобится метод dealloc.

-(void)dealloc {
    self.arrayPosition = nil;
    self.arrayCurrentPosition = nil;
    self.nameCurrentPosition = nil;
    [super dealloc];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...