Chciałbym napisać funkcję w Objective-C, taką jak poniższa, która pobiera zmienną liczbę argumentów i przekazuje te argumenty do +stringWithFormat:
. Wiem o vsnprintf
, ale to oznaczałoby konwersję "formatu" NSString na C iz powrotem (a także oznaczałoby konwersję formatujących symboli zastępczych w nim również ...). poniżejJak "przekazać" zmienną liczbę argumentów do łańcucha znaków NSString + stringWithFormat:
Kod kompiluje, ale oczywiście nie zachowuje się jak chcę :)
NSString *estr(NSString *format, ...) {
va_list args;
va_start(args, format);
NSString *s = [NSString stringWithFormat:format, args];
va_end(args);
return s;
}
zasadzie: czy istnieje va_list
-friendly wersja metody +stringWithFormat:
, czy jest to możliwe, aby napisać?
Wystarczy wykazać, że nie jest to tylko przykład zabawki, chciałbym użyj również tej metody: http://cocoaheads.byu.edu/wiki/different-nslog –
Tak, rzeczywiście! NSLog jest zbyt gadatliwy, sprawia, że czasami trudno go odczytać. Miałem na myśli bardzo prosty sposób internacjonalizacji moich aplikacji ... Chcę napisać coś takiego jak tr (@ "Can not open file% @", filePath); na przykład, i po prostu zwracaj to, co jest, jest (odpowiednio sformatowane) we wczesnych etapach rozwoju, a następnie posiada narzędzie, które znajduje wszystkie wywołania tr(), tworzy potrzebne pliki zasobów dla tłumaczeń z wywołań, które odnalazł, później po prostu przełączam przełącznik, a wywołania tr() faktycznie sprawdzają i tłumaczą wiadomości, które przekazują ... –