0

我想扩展UIButton一些NSString元信息。我怎么能这样做?

我从这个开始:

@interface UIButton (neoUtils)

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

@end

还有他们

#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 回答