atribuir propriedades, objetos ARC e Core Foundation

Editar 2.

Graças aKen isso está funcionando agora. E eu até acho que entendo porque :-)

Aqui está a linha alterada:

- (void) reCreatePath {
    CGMutablePathRef p = ::CGPathCreateMutable() ;

    ::CGPathMoveToPoint         (p, 0, TL.x, TL.y) ;
    // [snip]
    ::CGPathAddLineToPoint      (p, 0, BL.x, BL.y) ;
    ::CGPathCloseSubpath(p) ;


    self.path = p ;
    ::CGPathRelease(p) ;   // <<== THIS IS IT!! :-)
}
Editar.

Eu ainda não entendi. Eu tentei a sugestão de Chuck:

@property (nonatomic, strong) __attribute__((NSObject)) CGPathRef  path ;

Igual a:

@interface TopLeftSlidingView  ()

@property (nonatomic, strong) __attribute__((NSObject)) CGPathRef  path ;

@end

E no ponto em que eu recriar o CGPath:

- (void) reCreatePath {
    CGMutablePathRef p = ::CGPathCreateMutable() ;

    ::CGPathMoveToPoint         (p, 0, TL.x, TL.y) ;
    // [snip]
    ::CGPathAddLineToPoint      (p, 0, BL.x, BL.y) ;
    ::CGPathCloseSubpath(p) ;


//    self.path = (__bridge CGMutablePathRef) p ;
//    self.path = (__bridge_transfer CGMutablePathRef) p ;
//    self.path = (__bridge_retained CGMutablePathRef) p ;
    self.path = p ;
}

Qualquer uma das três linhas comentadas resulta em um erro do compilador. A linha não comentada compila, mas gera um aviso de analisador:

/Users/verec/Projects/WordGame/WordGame/classes/TopLeftSlidingView.mm:211:26:
 Call to function 'CGPathCreateMutable' returns a Core Foundation object with
 a +1 retain count

Seguido por:

/Users/verec/Projects/WordGame/WordGame/classes/TopLeftSlidingView.mm:225:5:
 Object leaked: object allocated and stored into 'p' is not referenced later 
 in this execution path and has a retain count of +1

Eu só não entendi :(

Considerar:

@interface Test : NSObject

@property (nonatomic, assign) CGColorRef color ;

@end

@implementation Test

- (void) dealloc {
    if (self.color) {
        ::CGColorRelease(self.color) ;
        self.color = 0 ;
    }
}

- (id) init {
    if (self = [super init]) {
        self.color = ::CGColorRetain([UIColor blueColor].CGColor) ;
    }
    return self ;
}

@end

Isso tudo compila (e aparentemente executa), exceto que o analisador mantém relatórios de avisos.

Em essência, o que este código está dizendo é: "Por favor ARC, não se incomode em fazer nada comcolor, por favor, trate da maneira que você trataria qualquer outraassign propriedade, seja um BOOL ou CGFloat, estou lidando com gerenciamento de memória por conta própria! "

Exceto que ARC se recusa a me ouvir e ainda reclama!

Eu li muitas perguntas aqui no SO, mas nenhuma delas parece resolver esse problema ...

A principal coisa aqui, e o compilador (embora não o analisador) parece concordar, é que declarando a propriedade `assign 'eu reivindiquei lidar com tudo sozinha ...

Então eu devo estar errado, mas eu não vejo porque ...

O que há de errado?

questionAnswers(1)

yourAnswerToTheQuestion