em Objective-C, como acessar propriedade privada da categoria

Desejo acessar a propriedade privada de uma classe de sua categoria.

Mas para acessar a propriedade privada, tenho que redeclarar a mesma propriedade privada na categoria.
Se eu não redeclarar, recebo um erro de compilação,Property '<property name>' not found on object of type '<class name> *'.

Esta maneira correta de acessar propriedade privada de classe de categoria?
E há maneiras melhores de fazer isso?

O código a seguir é o código que a propriedade privada é redeclarada na categoria:

ClassA.h

@interface ClassA : NSObject
-(void)method1;
@end

Classe A.m

#import "ClassA.h"

// private property
@interface ClassA()
@property (nonatomic) NSString *s;
@end

@implementation ClassA
@synthesize s;

-(void)method1
{
    self.s = @"a";
    NSLog(@"%@", [NSString stringWithFormat:@"%@ - method1", self.s]);
}
@end

ClasseA + Categoria.h

#import "ClassA.h"

@interface ClassA(Category)
-(void)method2;
@end

Classe + Categoria.m

#import "ClassA+Category.h"

// redeclare private property
@interface ClassA()
@property(nonatomic) NSString *s;
@end

@implementation ClassA(Category)

-(void)method2
{
    NSLog(@"%@", [NSString stringWithFormat:@"%@ - method2", self.s]);
}
@end


É uma boa maneira de criar um arquivo (ClassA + Private.m) para propriedade privada e importá-lo de ClassA.m e ClassA + Category.m:

Aula + Privado.m

@interface ClassA()
@property(nonatomic) NSString *s;
@end