Dans l'iPhone OS, mprotect() échouera si vous essayez de l'utiliser pour marquer écriture des sections de mémoire exécutable. Cela rompt les ponts comme RubyCocoa (et probablement MacRuby) qui utilisent libffi de créer Objective-C méthode des gestionnaires lors de l'exécution. Je crois que c'est à dessein, car il n'était pas toujours le cas.
En fin de compte, c'est plus une question de plate-forme politique que de la technologie, mais une technique de contournement de ce qui existe. Au lieu de générer méthode personnalisée gestionnaires au moment de l'exécution, de précompiler une piscine de reconfigurable ceux qui sont attribués en tant que de besoin, essentiellement faire de la combler entièrement le processus piloté par les données. Autant que je sache, ce n'est pas encore fait dans RubyCocoa ou MacRuby.
Une autre chose importante à considérer est que la compilation des Rubis et RubyCocoa exécutions peuvent être beaucoup plus grande que compilé Objective-C applications. Si ces bibliothèques sont disponibles sur l'iPhone, ce ne serait pas un problème, mais pour l'instant, même si vous aviez RubyCocoa de travail, vous pourriez ne pas vouloir l'utiliser pour les applications que vous distribuez.