2010-10-03 9 views
1

J'ai créé un objet dans la méthode viewDidLoad :. Dans une autre méthode que je crée, je veux accéder à cet objet.Comment partager un objet entre deux méthodes de classe

Une façon de le faire est de déclarer l'objet dans le fichier h.

Une autre façon de le faire est de le passer en paramètre.

Existe-t-il d'autres moyens?

+1

Alors que les réponses ci-dessous sont divertissants. Il est difficile de répondre sans en savoir plus sur ce que vous essayez de faire. Si vous essayez juste de partager des données, vous voulez probablement faire de votre classe partagée un [singleton] (http://stackoverflow.com/questions/145154/what-does-your-objective-c-singleton-look-like). – Jacob

Répondre

20

Il y a plusieurs façons de le faire. Ce n'est pas une liste exhaustive.

  • passe comme paramètre

  • déclarer un mondial

  • bâton dans +threadDictionary

  • de NSThread déclarer une méthode de classe qui retourne l'objet

  • tenir une référence à l'objet dans une variable d'instance

  • Déclarez une fonction ou une méthode qui a une statique locale qui stocke l'objet et le retourne

  • utiliser des références associées à l'attacher à un objet aléatoire quelque part que les deux méthodes peuvent se rendre à

  • carte une gros morceau de la mémoire à une adresse connue et écrire la référence dans le premier mot de la page

  • archive le pointeur sur NSUserDefaults et relire

  • archiver le pointeur ou l'objet à un fichier dans le système de fichiers et relire

  • attirer l'adresse dans une image et utiliser la reconnaissance optique de caractères pour saisir de nouveau

Sans plus de détails, il est difficile dire quelle est la meilleure approche (au-delà de dire que je serais extrêmement surpris si les 4 dernières étaient la bonne solution).


Certains supplémentaires:

  • utilisation synthèse audio pour dire l'adresse, la reconnaissance vocale pour le relire (@chockenberry dit « ou pourrait chuchoter pour obtenir une référence faible.«)

  • @boredzo suggère que vous simulez un Apple] [/ C64 Interface casette

  • dans la veine audio, le plus pratique est susceptible d'utiliser le code morse car il est facile de reconnaître

  • vous pouvez probablement utiliser une notification push, mais vous auriez à compter sur l'utilisateur appuie sur un bouton pour vous redonner la référence (en supposant iOS)

+3

J'ai effectivement fait la sortie de la cassette Apple II (mais pas d'entrée): https://bitbucket.org/boredzo/file-to-audio-file/wiki/Home Le protocole comprend un en-tête qui devrait le rendre assez facile à reconnaître - peut-être même plus facile que le code Morse. –

+2

Vous pouvez également publier l'objet via un «NSNotification» et avoir l'autre méthode comme action de notification –

+0

Vous pouvez publier les données que vous souhaitez enregistrer sur Twitter via un simple appel API avec un hashtag, puis configurer une recherche Twitter pour ce hashtag. Hit le flux RSS pour ce hashtag et lire le corps de la charge utile RSS. Les données que vous mettez là devraient être de retour. Malheureusement, vous êtes limité à 140 caractères (moins la longueur hashtag). Pour quelque chose de plus grand, je considérerais une variable d'instance dans mon contrôleur de vue. Mais ce serait le faire à la dure. – Ramin

Questions connexes