2016-01-02 38 views
-2

我有一個類MessageStorage,它已被分爲兩類MessageSentMessageReceive。我在MessageStorage類中定義了NSString屬性。現在我想從MessageSent類中設置這個字符串屬性,並從MessageReceive類中獲取字符串。
我該如何做到這一點?從B類設置值並從C類獲得值.B類和C類是A類的子類

+ (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
我需要做些什麼改變?

+3

創建噸單身不會得到你在任何地方她。建立一個適當的依賴和授權鏈。你的'MSReceive'實例對你的'MSSend'實例有**沒有任何作用。在一個實例中設置屬性根本不會影響另一個屬性。 – luk2302

+0

從我正在閱讀的內容來看,聽起來就像你想在發送和接收之間共享一個字符串,只需在兩者之間連接一個變量即可。最簡單的方法是讓'MessageStorage'擁有一個類或靜態變量,這將允許任何對象讀寫1個變量位置 – Knight0fDragon

回答

0

屬性添加到MessageStorage

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

而且使用self.someProperty它引用在子類:如果你想從其他子類的實例引用屬性

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

,那麼你將需要對該類實例的引用。如何實現這一目標並不清楚你的問題,所以目前我無法幫助。兩個實例都來自同一個超類的事實並不重要;如果這些課程不是兄弟姐妹,則會發生同樣的問題。

一旦你擁有其他類的引用,它只是:

other.someProperty = @"Hola"; 
相關問題