类别因不能添加实例变量,所以添加属性不能生成实例变量也不能自动生成setter跟getter方法,但可以自己实现setter跟getter方法。
第一种使用属性的方法:自己实现setter跟getter方法,用参数的值判断对主类中实例变量做一些操作。
.h文件代码:
#import "Fimaly.h"
@interface Fimaly (Play)
@property (nonatomic,assign) int age;
@end
.m文件代码
#import "Fimaly+Play.h"
@implementation Fimaly (Play)
- (void)setAge:(int)age
{
if (age<10) {
_nike=@"child";
}
else
{
_nike=@"man";
}
NSLog(@"%@",_nike);
}
- (int)age
{
if ([_nike isEqualToString:@"child"]) {
return 10;
}
else
{
return 20;
}
}
@end
第二种方法是通过关联对象存储信息
#import "Fimaly+Play.h"
#import <objc/objc-runtime.h>
@implementation Fimaly (Play)
- (void)setAge:(int)age
{
objc_setAssociatedObject(self, "age", @(age), OBJC_ASSOCIATION_RETAIN);
}
- (int)age
{
NSNumber *number=objc_getAssociatedObject(self, "age");
return [number intValue];
}
@end
时间: 2024-10-10 14:40:57