我想使用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
这是正确的道路吗?如果是这样 - 我怎么可能使用它?
答案 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。 但这只是一种可能性,也许有人有更好的解决方案。