UIButtonクラスに.ownerメソッドと.numberメソッドを追加しようとしています。ボタンを区切るために番号を使用できるように、個々の番号に(int)番号を割り当てる必要があります。
例えば、私が書くことができbuttonName.number = 1
てbuttonName.owner = @"Player1";
どうすればこれを行うことができますか?
UIButtonクラスに.ownerメソッドと.numberメソッドを追加しようとしています。ボタンを区切るために番号を使用できるように、個々の番号に(int)番号を割り当てる必要があります。
例えば、私が書くことができbuttonName.number = 1
てbuttonName.owner = @"Player1";
どうすればこれを行うことができますか?
これを行う方法はいくつかあります。より簡単な方法は、UIButtonクラスをサブクラス化し、必要に応じてプロパティを追加することです。これは、次のように実現できます。
@interface MyButton:UIButton
@property(nonatomic, assign) int number;
@property(nonatomic, strong) NSString *owner
@end
もう1つの方法は、ランタイムを使用してプロパティをクラスに追加することです。このためには、クラスのカテゴリを作成してから、インターフェイスにプロパティを追加し、ランタイムを使用してプロパティを追加します。
@interface UIButton(MyCategory)
@property(nonatomic, assign) float number;
@property(nonatomic, strong) NSString *owner;
@end
@implementation UIButton(MYCategory)
NSString *const numberKey = @"kNumberKey";
NSString *const ownerKey = @"kOwnerKey";
- (float)number{
return [objc_getAssociatedObject(self, &numberKey) floatValue];
}
-(void)setNumber:(float)num{
objc_setAssociatedObject(self, &numberKey,[NSNumber numberWithFloat:num], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
-(NSString*)owner{
return objc_getAssociatedObject(self, &ownerKey);
}
-(void)setOwner:(NSString *)own{
objc_setAssociatedObject(self, &ownerKey, own, OBJC_ASSOCIATION_COPY);
}
@end
これにより、UIButtonクラス自体にカスタムプロパティを追加できるようになります。