我正在开发iOS 5.0+应用,我正在为UIButton
创建一个类别:
@interface UIButton (NotificationBall)
@property (nonatomic, assign) NSInteger type;
@property (nonatomic, assign) NSInteger index;
@end
及其实施:
#import "UIButton+NotificationBall.h"
@implementation UIButton (NotificationBall)
@dynamic type;
@dynamic index;
@end
在互联网上搜索我发现了question,但我没有找到NSInteger
的任何示例。
我是否需要使用NSNumber而不是NSInteger?
如果我使用,NSNumber,我该怎么办?
答案 0 :(得分:3)
只能将Objective-C对象设置为 关联对象,标量不能直接使用。 所以你可以将属性声明为
@property (nonatomic, strong) NSNumber *type;
并直接使用答案https://stackoverflow.com/a/5500525/1187415中的代码 你引用的。
或者保留NSInteger
属性,并将其打包/解包到NSNumber
在这样的getter / setter方法中:
-(void)setType:(NSInteger)type
{
objc_setAssociatedObject(self, &UIB_TYPE_KEY, @(type), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
-(NSInteger)type
{
return [objc_getAssociatedObject(self, &UIB_TYPE_KEY) integerValue];
}
备注:“type”和“index”是很常见的名字。您应该考虑使用一些前缀来添加属性名称
避免与UIButton
的现有属性发生可能的名称冲突。