0

いくつかのメタ情報を拡張UIButtonしたいと思います。NSStringどうすればこれを行うことができますか?

私はこれから始めています:

@interface UIButton (neoUtils)

+ (UIButton *)neoName:(NSString *)buttonName;  

@end

そして.m

#import "UIButton+NAME.h"

@implementation UIButton (neoUtils)

+ (UIButton *)neoName:(NSString *)buttonName {
    UIButton *button = [UIButton neoName:buttonName];
    NSLog(@"%@",button);
    return button;
}

@end

これは正しい道ですか?もしそうなら、どうやってそれを使うことができますか?

4

1 に答える 1

1

私はそれを仮定しています

@interface UIButton (neoUtils)

UIButton+NAME.h で宣言されています。

まず第一に、そのメソッドを呼び出すとすぐに、そのプログラムは再帰ループに入るように見えます:

+ (UIButton *)neoName:(NSString *)buttonName {
    UIButton *button = [UIButton neoName:buttonName]; // <- this one
    NSLog(@"%@",button);
    return button;
}

メソッド自体を再帰的に呼び出すためです。

とにかく、拡張オブジェクトには状態が必要であることを考慮すると (メタ情報の NSString は「記憶」する必要があります)、クラスの動作を拡張するだけのカテゴリで要件を満たすことはできないと思います。その後、あなたのソリューションは正しいステップで開始されなかったと思います。

代わりに、次のようなクラスを作成するだけです

@interface XYMetaInfoButton : UIButton

@proerty (nonatomic, [strong|retain]) NSString *name;

@end

その後、プロジェクトにグローバルにインポートして、メタ情報を含む新しい UIButton を作成できます。しかし、それは単なる可能性であり、誰かがより良い解決策を持っているかもしれません。

于 2012-07-31T21:54:42.433 に答える