Nasıl Objective-C değişken bağımsız değişken yöntemleri oluşturmak için
belki de bu olacak belli ki en basit, ama verir misiniz bir örnek oluşturmak da benzer yöntemler (objective-C) ve işlevleri C oluşturmak gibi işlevleri NSString
stringWithFormat:
NSLog()
Sadece hatırlatmak için:
[NSString stringWithFormat:@"example tekst %i %@ %.2f",122,@"sth",3.1415"];
NSLog(@"account ID %i email %@",accountID,email);
NSString
'In yöntemi stringWithFormat:
, NSURL - urlWithFormat
. benzer oluşturmak istiyorum
Şimdiden teşekkür ederim.
CEVAP
Bu ne denir, genellikle, "variadic fonksiyonlar" (veya bunun gibi yöntemleri).
Bu oluşturmak için yeterlidirsonundasenin yöntem gibi , ...
ile declartion
- (void)logMessage:(NSString *)message, ...;
Bu noktada muhtemelen en iyi printf
-gibi bir fonksiyonu sıfırdan bir tane uygulama çalışıyor gibi sarmak istiyorum.
- (void)logMessage:(NSString *)format, ... {
va_list args;
va_start(args, format);
NSLogv(format, args);
va_end(args);
}
NSLogv
kullanımı not 17**; NSLog(NSString *, ...);
vs eğer; initWithFormat:arguments:
NSString *
bir dize istiyorsanız NSLogv(NSString *, va_list);
, ya da düşünün.
Eğer, diğer taraftan, dizeleri, ama oldukça gibi bir şey olduğunu size
(NSArray *)arrayWithObjects:(id)object, ... NS_REQUIRES_NIL_TERMINATION;
işleri çok daha kolay.
vprintf
tarzı bir işlevi yerine böyle bir durumda, bir döngü args
gibi kimliği varsayarsak, geçiyor kullanın ve herhangi bir döngü olarak yorumlanabilir.
- (void)logMessage:(NSString *)format, ... {
va_list args;
va_start(args, format);
id arg = nil;
while ((arg = va_arg(args,id))) {
/// Do your thing with arg here
}
va_end(args);
}
Bu son örnek, tabii ki, va_args listesi sıfır sonlandırılmış olduğunu varsayar.
Not:Bu işi yapmak içinolabilir<stdarg.h>
; ama eğer hafızam beni yanıltmıyorsa, bu NSLogv ile bağlantılı olarak yer alır eklemek için, aşağı "Vakfı.bu arada gelir anlamı h", bu nedenle de "AppKit.h" ve "Kakao."diğerleri bir dizi yanı sıra; bu kutunun dışında çalışır. h
Bir yöntem için geçirilen bağımsız değ...
Nasıl Clojure içinde işlev bağımsız de...
Nasıl isteğe bağlı giriş bağımsız deği...
Nasıl nesne yönelimli programlamada iç...
Tüm dosyaları " zaman 3 gün;bağıms...