Güvenli bir döküm gerçekleştirmek için Objective-C'ye bir makro yazdım. Bu gerçekten iyi çalışıyorAmaç-C Güvenli Döküm Makrosu
#define SAFE_CAST(OBJECT, TYPE) ([OBJECT isKindOfClass:[TYPE class]] ? (TYPE *) OBJECT: nil)
, ancak iki kez adlı vermedi böylece bir değişkende OBJECT saklamak için bir yol olsaydı iyi olurdu: Burada şimdiye kadar böyle görünüyor. Makro genişletildiğinde buna benzer kod
NSString *str = SAFE_CAST([dictinary objectForKey:key], NSString);
sonuçları: Örneğin, gibi makro kullanarak
:NSString *str = ([[dictinary objectForKey:key] isKindOfClass:[NSString class]] ? (NSString *) [dictinary objectForKey:key]: nil);
daha böyle çalışması için tercih ediyorum
id obj = [dictionary objectForKey:key];
NSString *str = ([obj objectForKey:key] isKindOfClass[NSString class]] ? (NSString *) obj : nil);
Teşekkürler.
ben bu noktanın ne görmüyorum. Bunu plisten sterilize etmek için kullanmak istediğini söyledin, ama eğer bunu kullanırsan, iade edilen nesnenin sıfır olup olmadığını test etmelisin? Neden sadece nesne KindOfClass: expectedClass olup olmadığını test etmiyor? – JeremyP