2013-02-16 5 views
5

Na przykład mamCzy można przekonwertować NSString do zwykłego Celu kodu C

NSString *string = @"return sharedInstance;"; 

Mam metodę klasy

+ (id)sharedInstance; 

mogę przekonwertować ciąg do zwykłego kodu i użyć go w moim metoda? Byłoby to niezwykle przydatne do debugowania. Załóżmy, że mam metodę, w której chcę przetestować jakiś kod (Niech to będzie proste wartości zwracane, czy to możliwe?) Mogę po prostu napisać kod dla metody i przetestować nowy kod w środowisku wykonawczym.

+0

chcesz skompilować kod objc w czasie wykonywania i wykonać je? lepiej przyjrzeć się opcjom przy użyciu języka skryptowego. to, co używam: https: //github.com/xlc/CocoJS –

+0

O jakim języku skryptowym mówisz tutaj? Przykłady? – s6luwJ0A3I

+0

Świetnie! Czy mogę edytować plik .js w środowisku wykonawczym? – s6luwJ0A3I

Odpowiedz

5

To, co opisałeś, nie jest dokładnie możliwe. Ale istnieje wsparcie dla pewnych rzeczy, np. Możliwość tworzenia instancji klas i wywoływania metod (teoretycznie) za pomocą łańcuchów:

NSClassFromString pozwala na tworzenie instancji klas na podstawie przekazanego łańcucha.

NSSelectorFromString pozwala na wywołanie lub "wywołanie" metody opartej na przekazanym łańcuchu.

Ciąg można określić dynamicznie w czasie wykonywania.

Na podstawie Waszych komentarzy to nie jest to, co was interesuje (pomimo tego, że myślę, że to rzeczywiście dotyczy waszego pytania). Jedna rzecz, którą możesz zrobić (nie jest to natywna Obj-C, ale myślę, że jest to istotne, biorąc pod uwagę niektóre komentarze), to wstrzyknięcie JavaScript do UIWebView.

+0

To nie jest to, czego chcę, wiem o tym – s6luwJ0A3I

+0

Czego chcesz, nie jest możliwe. – isaac

+0

Hmm .... Wystarczająco uczciwe, jakie są najlepsze alternatywy dla tego – s6luwJ0A3I

6

Cel C na iOS jest językiem kompilowanym; Kod jest interpretowany i tłumaczony na kod maszynowy na długo przed uruchomieniem aplikacji. Prowadzenie celu C w taki sposób dynamiczny nie jest możliwe. Do tego potrzebny będzie dynamiczny język.