you can define it in two headings .. in two different categories.
Do not define it in the class itself.
so you separate them
eg. you have:

T has an obsolete property. But internally you want to use it
"" , m
: ()
#import <Foundation/Foundation.h>
#import "T+Public.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
T *t = [[T alloc] init];
NSLog(@"%@", t.deprecated);
}
return 0;
}
T.h
#import <Foundation/Foundation.h>
@interface T : NSObject
@end
T Public
#import "T.h"
@interface T (Public)
@property(nonatomic, readonly, copy) NSString *deprecated DEPRECATED_ATTRIBUTE;
@end
T.m, DOESNT
#import "T.h"
@interface T ()
@property(nonatomic, copy) NSString *deprecated;
@end
@implementation T
- (id)init {
self = [super init];
self.deprecated = @"LALA";
NSLog(@"%@", self.deprecated);
return self;
}
@end