Ho una proprietà che diventa non valida mentre mi muovo tra viewDidLoad e viewWillAppear. Non ho idea del perché ciò avvenga.Perché la proprietà NSString cambia in valore non valido?
Ho una classe di supporto che ottiene il percorso del mio database. Assegno questa classe al delegato dell'app. RootViewController ottiene un riferimento al AppDelegate in questo modo:
//inside .h file
@interface RootViewController : UITableViewController
<UITableViewDelegate, UITableViewDataSource>{
NSArray *controllers;
myAppDelegate *appDelegate;
}
//inside .m file
@implementation RootViewController
@synthesize controllers;
- (void)viewDidLoad {
appDelegate = [[UIApplication sharedApplication] delegate];
self.controllers = appDelegate.topicControllers;
[super viewDidLoad];
}
I mouse sopra AppDelegate per trovare la classe di database di supporto e la proprietà che contiene il percorso del database:
NSPathStore2 * appDelegate.databaseHeper.databasePath "/Users/userA/Library/Application Support/iPhone Simulator/User/Applications..."
databasePath viene dichiarato un NSString. Perché è cambiato in NSPathStore2?
Mentre continuo nel debugger, succede un'altra cosa strana. Una volta ottenuto in viewWillAppear, il valore della proprietà diventa "non valido" e il tipo torna a NSString. Anche se ho visto UIButton lì dentro.
Perché non è valido? Non posso più usare la variabile.
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated]; //changes before this line executes
}
non faccio nulla tra viewDidLoad e viewWillAppear. Ecco come databasePath viene assegnato nella classe databaseHelper, che si verifica in precedenza su applicationDidFinishLaunching:
- (NSString *) getDBPath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
return [documentsDir stringByAppendingPathComponent:self.databaseName];
}
stringByAppendingPathComponent restituisce un NSString. Perché ottengo un NSStorePath2 a volte lungo la strada dopo l'assegnazione?
Ora ho tutto senza problemi, ma ho appena chiamato [databaseHelper getDBpath]. Il mio obiettivo è quello di salvare alcuni cicli della CPU e memorizzare quel valore. Quindi databasePath. Qualche suggerimento perché databasePath cambia in non valido?
Perché i downvotes? Questa è una domanda migliore di un buon numero di domande povere che ricevono tonnellate di upvotes! –