Vous aurez vraiment besoin de clarifier dans quel sens vous entendez par "existe" car cela peut être interprété de diverses manières.
Vous pouvez trouver que retainCount d'un objet peut satisfaire votre définition de exists dans ce cas. Si vous n'êtes pas familier avec la gestion de la mémoire d'Objective-C, sachez qu'une fois que le retainCount d'un objet atteint 0, il est désalloué et n'est plus "existant".
if ([lbl_timer retainCount] >= 1) {
// The object is owned/retained by at least one thing,
// assuming a parentview is an owner
[lbl_timer removeFromSuperview];
} else {
// The object isn't retained by anyone
}
Honnêtement, c'est pas le plus fiable ou moyen "sûr" pour vérifier.
EDIT: Le fait que l'appel de retainCount sur un objet désalloué provoque un plantage a été soulevé. Il est probablement préférable d'éviter ce type de vérification. S'en tenir à la méthode ci-dessous devrait être beaucoup plus sûr.
Si vous le savez, il se bloque spécifiquement parce qu'il ne dispose pas d'un parentview vous pourriez être en mesure de vérifier si elle a même un parentview.
if ([lbl_timer superview] != nil) {
[lbl_timer removeFromSuperView];
}
plus: Il pourrait même être plus sûr de faire lbl_timer vous n'est pas nil'd en premier.
if (lbl_timer != nil) {
if ([lbl_timer superview] != nil) {
[lbl_timer removeFromSuperView];
}
}
Merci pour votre réponse. il y avait une vue parent, mais je voulais savoir si elle a déjà été supprimée, elle s'est écrasée lors de la deuxième suppression, je pense. J'ai changé une autre variable globale, je l'ai utilisée comme drapeau, parce que c'était urgent. Je vais regarder dans la gestion de la mémoire, et le «néant» était une nouvelle idée pour moi. merci encore – pMan
Vous ne savez pas si vous pouvez appeler 'retainCount' pour les objets déjà désalloués, surtout si la mémoire a été réutilisée. – notnoop
Ah, bon point. Je devrais tester ça, mais toi, ça pourrait causer un crash.Il serait probablement plus sûr de tester pour s'assurer que l'objet n'est pas éliminé en premier. – Neil