使用objective c的runtime特性动态增加字段。
在category中特别有用,可以实现在不增加变量的情况下达到成员变量类似的效果。
示例:
- (BOOL)isRobot {
NSNumber *boolNum = objc_getAssociatedObject(self, kPlayerIsRobotKey);
if (boolNum == nil) {
return NO;
} else {
return [boolNum boolValue];
}
}
- (void)setIsRobot:(BOOL)isRobot {
objc_setAssociatedObject(self, kPlayerIsRobotKey, [NSNumber numberWithBool:isRobot], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}