PYTheme icon indicating copy to clipboard operation
PYTheme copied to clipboard

不能用一个NSMapTable管理吗?

Open qqzhao opened this issue 9 years ago • 0 comments

- (void)py_addToThemeColorPool:(NSString *)propertyName
{
    // 如果对象为_UIAppearance,直接返回
    Class appearanceClass = NSClassFromString(@"_UIAppearance");
    if ([self isMemberOfClass:appearanceClass]) return;
    // 键:对象地址+属性名 值:对象
    NSString *pointString = [NSString stringWithFormat:@"%p%@", self, propertyName];
    // 采用NSMapTable存储对象,使用弱引用
    NSMapTable *mapTable = [NSMapTable mapTableWithKeyOptions:NSMapTableCopyIn valueOptions:NSMapTableWeakMemory];
    [mapTable setObject:self forKey:pointString];
    // 判断是否已经在主题色中
    if (![[self themeColorPool] containsObject:mapTable]) { // 不在主题色池中
        [[self themeColorPool] addObject:mapTable];
        if (_currentThemeColor) { // 已经设置主题色,直接设置
            [self setValue:_currentThemeColor forKey:propertyName];
        }
    }
}

这里面的mapTable每次都是新创建的吧,不需要判断吧?

qqzhao avatar Dec 23 '16 18:12 qqzhao