Objective-C property that is readonly publicly, but has a private setter

前端 未结 2 365
青春惊慌失措
青春惊慌失措 2020-12-01 03:13

I\'d like to use the @property syntax to declare a synthesized property that is publicly readonly but has a setter that can be called privately from within the

相关标签:
2条回答
  • 2020-12-01 03:48

    I might be late, but without extension i did using the following technique

    @interface MyClass : NSObject {
     NSString * name;
    }
    
    @property (readonly, strong) NSString * name;
    
    @end
    

    on the other hand in implementation file

    @implementation MyClass
     @synthesize name;
    
     - (id)initWithItems:(NSDictionary *)items {
    self = [super init];
    if(self)
    { 
      name = @"abc";
    }
    
    return self;
    }
    
    @end
    

    doing so it will set your value and will be accessible as readonly. Thanks.

    0 讨论(0)
  • 2020-12-01 04:07

    I think what you're looking for are called class extensions. You would declare the property read-only in the header:

    @interface MyClass : NSObject {
    }
    
    @property (readonly, assign) NSInteger myInteger;
    
    @end
    

    Then redeclare in your class extension in the implementation file:

    @interface MyClass ()
    
    @property (readwrite, assign) NSInteger myInteger;
    
    @end
    
    
    @implementation MyClass
    
    @end
    

    For more check out Apple's documentation

    0 讨论(0)
提交回复
热议问题