通过私有类

时间:2015-12-08 00:46:59

标签: ios objective-c objective-c-category

我正在构建一个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然后锁定,没有错误或崩溃返回。所以我的问题是,如何为这个自定义对象设置这些属性?

0 个答案:

没有答案