我正在构建一个SDK,我有一个我希望向用户公开的类,但我不希望他们自己创建这个对象。我想出来解决这个问题的方法是在对象上设置一个私有类,然后在类别中对该对象进行初始化。此外,公共标头中的属性是只读的,因为我也不希望用户修改他们收到的对象。我在类别.h中看到的内容如下:
@property (nonatomic, readwrite) NSString *property;
- (instancetype)initWithData:(NSDictionary *)data;
.m看起来像这样:
@implementation MyObject (Category)
- (instanceType)initWithData:(NSDictionary *)data {
self = [super init];
if (self) {
MyObject *object = [[MyObject alloc] init];
NSLog(@"Object created");
[object setProperty:data[@"property"];
NSLog(@"Property set");
}
return self;
}
- (void)setProperty:(NSString *)property {
self.property = property;
}
此代码打印“object created”语句,但不打印“property set”语句。我的应用程序的UI然后锁定,没有错误或崩溃返回。所以我的问题是,如何为这个自定义对象设置这些属性?