2

だから.. CALayerKVCの「拡張機能」は、すべての変人を処理します..

+ (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 ですか?

4

1 に答える 1

0

NSNumberを返すことができるはずです。

私はまだObjectiveCリテラルの使用を試していません。合併症を制限するために今のところそれをスキップしてください。次のようなコードを使用してください。

return [NSNumber numberWithFloat: 3.0];

またはnumberWithBool、numberWithInt、または適切なもの。

于 2012-11-18T15:12:31.007 に答える