ARC преобразование TPMultiLayoutViewController;Неявное преобразование указателя Objective C в 'const void *' запрещено с ARC - PullRequest
1 голос
/ 26 января 2012

Я пытаюсь использовать TPMultiLayoutViewController в проекте, использующем ARC, но сталкиваюсь со следующей ошибкой: -

Неявное преобразование указателя Objective C в 'const void *' запрещено ARC

Я действительно не уверен, как справиться с этим; нужно ли явно конвертировать? и как бы я это сделал?

- (void)addAttributesForSubviewHierarchy:(UIView*)view associatedWithSubviewHierarchy:(UIView*)associatedView toTable:(NSMutableDictionary*)table {
    [table setObject:[self attributesForView:view] forKey:[NSValue valueWithPointer:associatedView]];

    if ( ![self shouldDescendIntoSubviewsOfView:view] ) return;

    for ( UIView *subview in view.subviews ) {
        UIView *associatedSubView = (view == associatedView ? subview : [self findAssociatedViewForView:subview amongViews:associatedView.subviews]);
        if ( associatedSubView ) {
            [self addAttributesForSubviewHierarchy:subview associatedWithSubviewHierarchy:associatedSubView toTable:table];
        }
    }
}

Ответы [ 2 ]

5 голосов
/ 26 января 2012

Вы получаете ошибку из-за этого:

[NSValue valueWithPointer:associatedView]

Так как valueWithPointer: занимает const char *. Вы можете обойти это, выполнив то, что предложил @ user1139069:

[NSValue valueWithPointer:(__bridge void *)associatedView]
0 голосов
/ 23 мая 2012

Что делать, если вы используете [NSValue valueWithNonretainedObject:] вместо [NSValue valueWithPointer:]?

...