2012-07-30 107 views
0

我想扩展UIButtonNSString一些元信息。我怎么能这样做?添加NSString类别扩展到UIButton

我开始与此:

@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 

这是在正确的道路上?如果是这样 - 我将如何使用它?

+0

这个问题不是重复的,但它已经在不同的上下文中回答过。请参阅http://stackoverflow.com/questions/10414718/subclassing-nsnumber。 – 2012-07-31 22:27:47

+0

这似乎是我正在寻找。谢谢 – malaki1974 2012-08-01 13:04:40

回答

1

我假设

@interface UIButton (neoUtils) 

中的UIButton + NAME.h声明。

首先,看起来就像当你调用该方法,方案将尽快进入一个递归循环:

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

,因为它会recurevely调用该方法本身。

无论如何,考虑到扩展对象必须有一个状态(元信息的NSString必须“记住”)我不相信有可能满足一个类别的要求,这只是扩展了行为班上。那么你的解决方案并没有从我猜想的正确步骤开始。

相反,我只是vould创建一类像

@interface XYMetaInfoButton : UIButton 

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

@end 

,然后可以在项目中有新的UIButton与元信息导入全球。 但这只是一种可能性,也许有人有更好的解决方案。

+0

感谢您的建议。 – malaki1974 2012-08-01 14:10:25