1

このようなマクロと定義を作成しました:

#define CustomImageOptions NSDictionary
typedef NS_ENUM(NSInteger, CustomImageOption) {
    CustomImageOptionResize, // CGSize
    CustomImageOptionQuality, // CGFloat
    CustomImageOptionType // NSString (JPEG or PNG)
};

私はこのような方法を持っています:

- (UIImage*)imageModifiedWithOptions:(CustomImageOptions*)options;

オプションの辞書を次のように渡したい場合 (疑似コード):

[self imageModifiedWithOptions:@{CustomImageOptionResize: CGSizeMake(10, 20), CustomImageQuality: 0.9}];

おそらく、私のマクロが NSDictionary のキーとして列挙できないタイプ NSInteger であるため、コンパイルされません。

これを実装して、オプションの NSDictionary をメソッドに渡すにはどうすればよいですか?

4

1 に答える 1

1

このようにしてください:

[self imageModifiedWithOptions:@{@(CustomImageOptionResize): CGSizeMake(10, 20), @(CustomImageQuality): 0.9}];

NSNumber最初に sに変換する必要があります。

于 2014-12-19T22:34:14.877 に答える