だから.. CALayer
KVCの「拡張機能」は、すべての変人を処理します..
+ (id) defaultValueForKey: (NSString*)key {
return [key isEqualToString:@"borderColor"]
? (id)cgPINK
: [super defaultValueForKey:key]; }
また、Apple のドキュメントは、値を指定しない場合にデフォルト値を参照するときに、構造体をエンコードする最善の方法をほのめかしています...
たとえば、キーの値が CGSize 構造体の場合、メソッドは NSValue オブジェクトにラップされた (0.0,0.0) を含むサイズ構造体を返します。
ただし、通常の悪臭を放つプリミティブを提供する方法がわかりません。CGFloat
@VAL
タイプNSNumber
エンコーディングを試しましたが、
return ![key isEqualToString:@"lineWidth"] ?: @3;
実行可能なNSValue
方法がなく、それらをキャストしようとする必死の試みでさえありませんid
return ![key isEqualToString:@"zPosition"] ?: (id)262453;
// lol
どうしたんだ?これは、CALayer のオッド ボールの性質による、単なる「まあ、仕方ない」状況ですか? 私が恥ずかしいほど見落とした明らかな解決策はありますか?それとも、それ自体の欠点を文書化することを拒否する怪しげな API ですか?