2010-07-07 4 views
0

J'utilise un morceau de code que je l'ai utilisé plusieurs fois avant de charger une image dans un UIImageViewplantage lors de la mise en image dans UIImageView

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UIImage *img = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"1" ofType:@"png"]]; 
    [self.imgWeather setImage:img]; 
} 

Pour une raison quelconque, je reçois un SIGABRT quand je frappe [auto. imgWeather setImage: img];

L'image et UIImageView semblent être initialisées correctement.

Une idée de ce qui se passe?

[EDIT]

Il semble écraser quand je setImage à zéro. Pas bon. Je viens de regarder la stackTrace et peut voir une exception 'de doesNotRecognizeSelector':

#9 0x02554651 in objc_exception_throw() 
#10 0x0240842b in -[NSObject(NSObject) doesNotRecognizeSelector:]() 
#11 0x02378116 in ___forwarding___() 

Le imgWeather est défini comme:

@property (nonatomic, retain) IBOutlet UIImageView *imgWeather; 

idée de ce que cela signifie?

+0

Pourquoi? –

+2

Pouvez-vous poster la pile d'appel complet de l'accident? –

+0

Jacob: J'ai déjà essayé votre suggestion. Même résultat Adam: Je posterai ça plus tard – EsbenB

Répondre

2

Si self.imgWeather est nul, rien de grave ne se produirait. Je suppose que self.imgWeather n'est pas nul mais ce n'est plus un UIImageView et vous frappez un objet différent ou juste un bloc de mémoire aléatoire (peut-être qu'il a été libéré, il y a peut-être un problème de mémoire dans votre application).

Est-ce que

[self.imgWeather setImage:Nil]; 

créer un problème aussi bien?

+0

Salut Krzyspmac, Je pense que vous avez raison. Il semble s'écraser quand je metsImage à zéro. Pas bon. Je viens de regarder la stackTrace et peut voir un 'doesNotRecognizeSelector' exception: # 9 0x02554651 dans objc_exception_throw() # 10 0x0240842b en - [NSObject (NSObject) doesNotRecognizeSelector:]() # 11 0x02378116 dans ___forwarding___() une idée de ce que cela signifie? Le champ imgWeather est défini comme suit: @property (nonatomic, retain) IBOutlet UIImageView * imgWeather; – EsbenB

+0

J'avais fait une erreur très stupide, et je n'avais pas utilisé @synthesize sur imgWeather. Merci pour la suggestion. M'a fait regarder dans la bonne direction – EsbenB

0

La première chose que je ferais est de s'assurer absolument que votre objet UIImageView est initialisé. Un moyen facile est simplement d'ajouter du code pour le vérifier nul et imprimer une ligne à la console avec le résultat.

+0

De cette façon 'self.imgWeather' serait' nil' et parce que la messagerie 'nil' est OK dans Obj-C je ne vois pas pourquoi cela serait la cause du SIGABRT. – bddckr

+0

UIImageView ou UIImage est nul – EsbenB

+0

Non, vous pouvez définir une image UIImageView à zéro (cela signifie "pas d'image") donc même si l'image était nulle, ce ne serait pas un problème. – Kalle

0

Je préfère beaucoup cette syntaxe:

[UIImage imageNamed:@"1.png"] 

FWIW. Essayez cela juste pour le plaisir.

+0

Ce n'est pas la même chose et cela entraîne une mise en cache de l'image de différentes manières. À moins que ce soit une petite image qui est utilisée à plusieurs reprises tout au long de son application, je recommande de ne pas l'utiliser. – Kalle

1
@property (nonatomic, retain) IBOutlet UIImageView *imgWeather; 

Votre imgWeather est une prise. Assurez-vous qu'il est correctement lié dans l'IB. Pourquoi pas `self.imgWeather.image = img;`?

Questions connexes