将NSString类别扩展添加到UIButton

时间:2012-07-30 23:19:27

标签: objective-c ios nsstring uibutton

我想使用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

这是正确的道路吗?如果是这样 - 我怎么可能使用它?

1 个答案:

答案 0 :(得分: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。 但这只是一种可能性,也许有人有更好的解决方案。