从类B中设置值并从类C获取值。类B和类C是类A的子类

时间:2016-01-02 11:36:50

标签: objective-c polymorphism subclass

我有一个班级MessageStorage,它已被分类为2个班级MessageSentMessageReceive。我在NSString课程中定义了MessageStorage属性。现在我想从MessageSent类设置此字符串属性,并从MessageReceive类获取字符串。
我怎样才能做到这一点?

+ (instancetype)sharedInstance {    // SuperClass MessageStorage

    if (!messageStorage) {
        messageStorage = [[MessageStorage alloc] init];
    }

    return messageStorage;
}

+ (instancetype)sharedInstance {    // SubClass of MessageStorage

    if (!msSend) {  
        msSend = [[MSSend alloc] init];
    }

    return msSend;
}


+ (instancetype)sharedInstance {     // SubClass of MessageStorage

    if (!msReceive) {
        msReceive = [[MSReceive alloc] init];
    }

    return msReceive;
}

我想我没有正确设置sharedInstance
我需要做出哪些改变?

1 个答案:

答案 0 :(得分:0)

将属性添加到MessageStorage

@interface MessageStorage : NSObject
@property NSString *someProperty;
@end

在子类中使用self.someProperty引用它:

self.someProperty = @"Hello";
NSLog(@"someProperty=%@", self.someProperty);

如果要从另一个子类的实例引用该属性,则需要对该类实例的引用。从你的问题中可以清楚地知道如何实现这一点,所以我目前无法帮助解决这个问题。两个实例都来自同一个超类的事实并不重要;如果班级不是兄弟姐妹,也会出现同样的问题。

一旦你引用了另一个班级,它就是:

other.someProperty = @"Hola";