我想要一個數組從一個類中獲取數據,以便在具有相同數據的另一個類中對我有效。
如果我們在applicationDelegate類上聲明一個數組。
然後在兩個類中聲明applicationDelegate的一個對象。
並將數組從一個類分配到appDelegate.array,我將能夠獲得跨類的數組?如何在兩個類之間共享數組?
回答
我與邁克。離開App Delegate。
你在控制何時以及如何實現對象。在創建相關類的實例時,如果多個類能夠訪問相同的數據,交出數據或獲取數據的方法很重要。
一個例子,給出類WVParent和WVChild。
WVParent有一個屬性,的someArray,這是陣列的其他對象需要:
@interface WVParent : NSObject {
NSArray *someArray
}
@property (nonatomic, retain) NSArray *someArray;
@end
然後你有WVChild,它本身有一個名爲parentObject屬性:
@class WVParent;
@interface WVChild : NSObject {
WVParent *parentObject;
}
@property (nonatomic, assign) WVParent *parentObject;
@end
假設父正在創建子實例,您將分配它並分配父代:
WVChild *child = [[WVChild alloc] init];
child.parentObject = self;
那麼孩子實例可以通過訪問的someArray:
self.parentObject.someArray
這僅僅是一個選項。您也可以將數組本身傳遞給孩子,假設數據是靜態的,並且在應用程序會話過程中不太可能發生變化。
通過這種方式,我們不再需要在App Delegate中存在數據源,而是生活在一個更適合其創建,維護和自動售貨的類中。如果您的課程已經存在並且只能通過獲得應用程序委託才能訪問其他應用程序,那麼您可能需要考慮一下您的架構。
更多的依賴注入這裏:
是的,你可以在你的applicationDelegate
類中聲明一個成員/屬性,儘管你應該嘗試遵循單一責任原則,並確保你不會在你的應用程序委託中填充大量其他共享的東西(這會發生很多與iPhone代碼)。
另一種方法是在創建對象的構造函數時將數組注入到對象的構造函數中。
很難知道設計方面的最佳解決方案,而不知道這些數據是什麼以及它的真正屬性。
我試圖用一個正常的變量。但即使它不工作。 – wolverine 2009-12-11 13:26:28
- 1. 在兩個類之間共享數據
- 2. 如何在類之間共享數據?
- 3. 如何在兩個類之間共享一個變量?
- 4. 如何在兩個類之間共享單個關鍵部分
- 5. 如何在兩個類之間共享一個方法?
- 6. 如何共享從不同類繼承的兩個類之間的數組
- 7. 如何在兩個子Angular2組件之間共享父HTML?
- 8. 如何在兩個協議之間共享關聯類型?
- 9. 如何在兩個django類之間共享變量?
- 10. 如何在兩個測試類之間共享ExternalResource?
- 11. 如何在兩個成員函數之間共享一個QListIterator?
- 12. 如何在兩個數據庫之間共享(使用)數據?
- 13. 如何在組件之間共享ContextMenu
- 14. 如何在類之間共享方法
- 15. 在兩個類之間的列表中共享數據
- 16. 如何在兩個瀏覽器窗口之間共享數據
- 17. 如何在AngularJS的兩個模塊之間共享數據?
- 18. 如何在兩個表單之間共享整數聲明?
- 19. 如何在javafx中的兩個場景之間共享數據
- 20. 如何在兩個進程之間共享數據
- 21. 如何在兩個@ViewScoped bean之間共享數據?
- 22. 如何在兩個模塊之間共享數據庫模型?
- 23. 如何在兩個winform應用程序之間共享數據?
- 24. 在兩個webapps之間共享Ehcache
- 25. 在兩個DbContext之間共享
- 26. 在兩個線程之間共享QAxObject?
- 27. 在兩個lambda之間共享變量
- 28. 在兩個winforms之間共享變量
- 29. 在類之間共享ListView
- 30. 在兩個共享對象之間共享變量
我「失蹤」在child.parentObject:self; – 2011-03-21 07:26:52
這真是愚蠢的我。該:應該是一個=符號。固定。 – 2011-03-21 20:21:43
謝謝:)好吧,我明白了,但很高興看到我做了正確的事情...... – 2011-03-21 22:28:23