j'ai suivi le tuto de michel martin concernant la création d'applications pour iphone. Il a été écrit sous IOS5 et moi je programme pour IOS6.
Voici mon viewcontroller.h:
//
// ViewController.h
// premier2
//
// Created by vincent on 25/01/13.
// Copyright (c) 2013 test. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *message;
- (IBAction)reagir:(id)sender;
@end
voici mon viewcontroller.m:
#import "ViewController.h"
@implementation ViewController
@synthesize message;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)reagir:(id)sender {
NSString *lemessage = [[NSString alloc] initWithFormat:@"Bravo !"];
message.text=lemessage;
}
@end
et voici le bug affiché...
2013-01-27 13:40:36.249 premier2[3146:11303] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<ViewController 0x925bed0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key reagir.'
*** First throw call stack:
(0x1c8c012 0x10c9e7e 0x1d14fb1 0xb76711 0xaf7ec8 0xaf79b7 0xb22428 0x22e0cc 0x10dd663 0x1c8745a 0x22cbcf 0xf1e37 0xf2418 0xf2648 0xf2882 0x41a25 0x41dbf 0x41f55 0x4af67 0xefcc 0xffab 0x21315 0x2224b 0x13cf8 0x1be7df9 0x1be7ad0 0x1c01bf5 0x1c01962 0x1c32bb6 0x1c31f44 0x1c31e1b 0xf7da 0x1165c 0x1d5d 0x1c85)
libc++abi.dylib: terminate called throwing an exception
(lldb)
Je suis débutant et cet erreur me fait vraiment peur...
Quelqu'un peut-il m'expliquer et me donner précisément la marche à suivre pour régler ce problème car le tuto est bien fait mais si tous les débutants se retrouvent coincés...
Comme l’éditeur de ce message, j'ai le même souci et j'essaye vos solution.
j'ai comprit que le tuto était obsolète d’où m'a question : En existe t'il un à jours svp ?
cordialement,
Cedric
PS : pour info, lorsque "message" est souligné en rouge, cliquez sur le petit cercle rouge à gauche de la ligne et XCode vous proposera de remplacer "message" par "_message" (se qui marche très bien)
- Edité par ThaneKrestoff 1 février 2013 à 11:11:43
Ce que je conseille aux débutants et de travailler sur du C et C++ afin de bien comprendre les notions d'objets et les bases du C. Ensuite pour passer sur de l'obj-c c'est mieux de passer sur la doc d'Apple.
Je comprends pas, ce même code fonctionne très bien de mon côté.
Essaie peut-être de recommencer à partir de l'ajout des contrôles sur l'interface, j'avais eu un soucis causé par une mauvaise manipulation la première fois que j'ai réalisé ce mini-TP.
Du dois avoir une version d'xcode plus ancienne car de toute façon la syntaxe a changer je vois mal comment ça pourrai marcher de ton coté si tu respectes bien la marche qui est présentée
Du dois avoir une version d'xcode plus ancienne car de toute façon la syntaxe a changer je vois mal comment ça pourrai marcher de ton coté si tu respectes bien la marche qui est présentée
J'ai la version 4.5.2, ça doit être pour ça. Parce que je viens d'essayer à nouveau (en comparant notre code qui est le même) et ça fonctionne très bien.
Je vais mettre la version 4.6 et je verrai bien
Edit : Je viens de mettre à jour Xcode (4.6) et mon programme fonctionne toujours. Le message passe bien en "bravo !" quand j'appuie sur le bouton. Bizarre tout ça..
Parce que le projet quand tu l'as ouvert utilisait l'ancien SDK et l'utilise toujours mais si tu recommence un projet avec la même chose dans ton code ça ne marchera plus.
Parce que le projet quand tu l'as ouvert utilisait l'ancien SDK et l'utilise toujours mais si tu recommence un projet avec la même chose dans ton code ça ne marchera plus.
J'ai testé par curiosité et tu as bien raison, Xcode m'oblige à rajouter _message.text...
en fait cette erreur ça arrive souvent quand tu as pas fait le lien entre ton IBOutlet et ton (label j'imagine je fais que parcourir le thread vite fiat) objet d'interface.
Pour le coup des _message ça vient des alias soit tu fais self.message,sinon tu rajoutes @synthesize message = _message (une histoire d'alias pour rester en local)
Si mon aide vous a été utile, merci de mettre le sujet en résolu et mettre mon post en avant. Cheers!
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
par