Je veux démarrer un nouveau fil à l'aide d'une fonction C, pas une méthode d'objectif-c. J'ai essayé où j'ai p> et Que puis-je faire à la place? Est-ce même possible? P> p> data code> est un
vide * code >, mais j'ai un crash d'exécution dans
objc_msgsend code>, appelé de p>
5 Réponses :
Créer une classe Objective-C avec une méthode qui appelle simplement cette fonction. Prenez le sélecteur de cette méthode et transmettez-le à Nsthread Code> API. P>
Ok, oui, je veux dire, sans faire ça. En d'autres termes, je veux savoir s'il manque une syntaxe
Je ne pense pas qu'il y ait une simple façon syntaxique de le faire. Un sélecteur est utilisé pour envoyer un message à un objet. L'envoi d'un message n'est pas identique à simplement appeler une fonction. Les mécanismes sous-jacents sont un peu différents.
J'espérais que cela enveloppait la fonction C automatiquement si elle devait.
Eh bien, je ne sais pas si c'est possible, mais gardez à l'esprit que chaque méthode d'objectif-c a deux arguments implicites / cachés, Si vous souhaitez que les méthodes et les sélecteurs de jerry-rigortent, vous devez avoir une méthode qui ressemble à celle-là: p> mais même après cela, vous devez enregistrer un nom de sélecteur avec l'exécution, puis vous devez associer ce sélecteur avec la méthode, mais Cela se fait de manière classée par classe (c.-à-d. Les classes peuvent avoir différentes implémentations du même nom de sélecteur), de sorte que vous avez au moins besoin d'avoir une classe factice. P> C'est beaucoup, beaucoup plus simple juste Pour créer une classe factice et une instance factice de cette classe que d'appeler les différentes API d'exécution juste pour obtenir auto code> et
_cmd code>. Un
IMP code> est généralement
typedef code> d tel que ceci:
nsthread code> pour appeler une seule fonction C. p> p>
Rouler votre propre: Vous pouvez toujours supprimer le Et vous pouvez l'utiliser comme: p> lorsque exécution: p> nsaToreleeePool code> BITS Si vous pouvez vous garantir que la fonction d'entrée de fil crée également une ... mais elle est inoffensif, n'a pas de pénalité de vitesse quoi-même et fait appel à des fonctions arbitraires qui sont beaucoup plus simples. Je dirais juste le garder là-bas. P>
2009-08-30 22:21:12.529 test[64146:1303] bgThreadFunction STARTING!! Data: 0xdeadbeef
2009-08-30 22:21:12.529 test[64146:2903] bgThreadFunction STARTING!! Data: 0xcafebabe
Il n'y a pas beaucoup de choses à faire tout cela et à rouler sa propre implémentation, tandis que nous pouvons vous fairez, DISPATHC_ASYNC_F () code>. Il est probablement préférable de laisser la mise en œuvre du filetage aux ingénieurs d'Apple. Ils savent peut-être un peu mieux ce qui se passe dans leur système.
Salut essayé votre code, à l'intumethod et c'est ce que j'ai obtenu - [Nsthread initwithfunction: Data:]: Sélecteur non reconnu envoyé à l'instance 0x60000007B7C0
Si vous n'avez pas besoin nsthread code>, vous pouvez également démarrer un thread avec Interface Direct Posix . P>
Je veux démarrer un nouveau fil à l'aide d'une fonction C, pas une méthode de l'objectif-c p> blockQuote>
Alors pourquoi n'utilisez-vous pas simplement: p>
- threads POSIX, LI>
- GCD? LI> ol>
DISPATCH_ASYNC_F () CODE> (homme) est adapté à exactement à cet effet. strong> p>