0
我有以下方法。@encode for type id其中id實際上是任何對象
- (void)someObject:(id)obj {
char* encoding = @encoding(typeof(obj));
NSString *s = [NSString stringWithCString:encoding encoding:NSUTF8StringEncoding];
NSLog(s);
}
這個方法總是返回@"@"
我是否通過NSNumber, NSArray, NSDictionary or NSString
類型的變量中的obj。我假設它正在檢查obj
指針類型。
我必須這樣做才能返回已傳遞的變量的實際類型編碼?
「變量的類型編碼」是什麼意思?你在期待什麼? – Merlevede
問題是,解引用一個'id'不透明類型是不合理的(所以@encode響應是正確的,因爲'id'是一個對象,意思是'@')......出於好奇,你是什麼試圖完成這個? – HepaKKes
@HepaKKes:我試圖從字典中將這些值賦給一個類的ivars。我有一個Ivars列表(使用class_copyIvarList()),我已經得到了伊娃類型(使用ivar_getTypeEncoding()),現在我想確保伊娃正在填充兼容值。 (例如NSArray伊娃應該填充NSArray)。我可以做if/else檢查使用isKindOfClass,但我在想是否有另一種方式,我只是比較伊娃的類型編碼和傳入的參數。 –