确定用于保存信息的UIViews

时间:2013-05-30 14:22:00

标签: ios objective-c uiview hash

我想跟踪我的UIView's(和UIViews的子类),在这种情况下,它们的帧。我想在NSDictionary中用一个相关的框架来表示我的每个子视图。

我实施了类似的东西;

    NSMutableDictionary *subviewRects = [[NSMutableDictionary alloc] init];

    // iterate through all subviews ans save their CGRects
    for (UIView *subview in self.holder.subviews) {
        NSValue *rectValue = [NSValue valueWithCGRect:subview.frame];
        [subviewRects setObject:rectValue forKey:[NSString stringWithFormat:@"%d",subview.hash]];
    }

但我不确定这是否是实现这一目标的正确方法,或者更重要的是hash UIView UIViewController属性在相关tag的生命周期内是否会发生变化?

注意:我忘了告诉我在这种情况下无法使用UIView的{​​{1}}属性。

1 个答案:

答案 0 :(得分:1)

我所知道的UIView的大多数继承者都会有一个静态哈希值。但是,要注意:这不能保证是真的,因为子类可以覆盖哈希。

相反,最好通过简单的命名方案跟踪您的视图,或者只是使用对象指针来保存引用(使用%p而不是%@来获取对象的指针而不是描述)

暂且不说:请注意,您正在使用控制器视图对象的哈希值来存储子视图的每个矩形。你确定你不是要使用每个子视图的哈希值吗?