Je souhaite séparer l'exécution d'une requête. La fonction myprepare ci-dessous ouvre la connexion à la base de données et exécute la fonction sqlite3_prepare_v2. Une fois que sqlite3_open est exécuté dans le cadre de myprepare, selectstmt et database ont des adresses valides qui leur sont assignées. Cependant, une fois que je sors de myprepare, leurs adresses sont effacées à 0x0. Pourquoi les valeurs de selectstmt et de la base de données ne sont-elles pas conservées en dehors de myprepare? Les valeurs des variables passées ne sont pas conservées
sqlite3_stmt *selectstmt = nil;
sqlite3 *database = nil;
[anInstance myprepare:selectstmt theDatabase:database]; //assignments are fine inside here
//here, the above values will be 0x0
Pour ceux qui ne veulent pas passer 5 minutes à se gratter la tête: "retenir" dans ce sens n'a pas à faire avec la gestion de la mémoire, mais devrait être "Les valeurs des variables passées ne sont pas conservées". –