在Master-Detail Xcode模板中,我應該在哪裏定義一個函數,使其可以全局訪問(由所有UIViewControllers及其子類)?Objective-C全局訪問方法
回答
如果您有一些不關心對象的類調用它的代碼,它可能被封裝到函數或子例程中,而不是方法。
方法是知道對象及其類的特殊類型的函數或子例程。函數或子例程就像一個不包含的全局方法。
加入: Objective C是C編程語言的超集。所以C函數和子程序在兩種語言中都是相同的。您可以在(或任何).c或.m文件中寫入一個文件,並將其聲明在.h文件中以包含在您希望使用的任何位置。根據需要傳遞參數並從函數中獲取返回值,就像方法一樣(除了與任何固有的對象類無關)。
增加了#2:但是既然你想讓你的方法知道一些NSStreams,那麼它應該是一些包含這些流的Model類(MVC範例)的方法,而不是真正的全局性。將此Model對象傳遞給任何需要訪問它的視圖控制器或其他類。
方法和函數之間有什麼區別? – danielmhanover
「在面向對象編程中,方法是與類關聯的子例程(或過程或函數)。」 http://en.wikipedia.org/wiki/Method_(computer_programming) – vikingosegundo
既然他們是一樣的,你到底建議我做什麼? – danielmhanover
一種可能性:您可以使用該方法在UIViewController
上定義一個類別。所以任何UIViewController
現在也有這種方法。
另一種可能性:子類UIViewController
並在那裏寫你的方法。然後從這個自定義視圖控制器的子類。
編輯:
而且,我MasterViewController是的UITableViewController的子類,而DetailViewController是的UIViewController的子類。如果我他們兩個子類,以自定義的UIViewController,該MasterViewController將失去其繼承的UITableViewController
你可以繼承一個UITableViewController
,做同樣的事情,與UIViewController
和子類此。
基本思路是以UITableViewController
和UIViewController
爲模板。
這些方法的問題是,由於我的全局可訪問方法必須連接到Web服務器,它們必須共享一個NSInputStream和NSOutputStream。類別不支持變量/屬性。另外,我的MasterViewController是UITableViewController的子類,而DetailViewController是UIViewController的子類。如果我將它們繼承到一個自定義的UIViewController,那麼MasterViewController將失去它的UITableViewController繼承。 – danielmhanover
編輯我的答案。在你原來的問題中,有(現在仍然是!)只是提及一個全局方法 - 與變量無關。所以請編輯你的問題以獲取更多細節。 – Pfitz
使類和方法靜態。使用加號而不是減去例如+(void)methodName:param(ParamType *);
。
請注意,您不能實例化此類的一個對象。這就像程序編程。如果我需要相同但改變不同對象和視圖的價值,我通常會使用它。儘管如此,我並沒有更好的方式爲我服務。
是的,這似乎是一個好主意,但它基本上是hotpaw2說的。 – danielmhanover
您可以在appDelegate類中創建可通過所有應用程序訪問的方法。例如,在你的AppDelegate.h您已聲明此方法如下:
-(void)myMethod;
在你AppDelegate.m,你把它定義爲:
-(void)myMethod
{
NSLog(@"myMethod is getting called");
}
從任何其他類(碩士或細節,等等),您可以訪問myMethod的是:
#import "AppDelegate.h"
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate myMethod];
- 1. 在靜態方法中訪問全局類的全局方法
- 2. 訪問方法中的全局變量
- 3. 關於全局內存訪問方法
- 4. 訪問PHP全局變量的方法
- 5. 從方法Typescript訪問全局變量
- 6. 全局訪問MemoryStream
- 7. 全局方法?
- 8. pip包無法全局訪問
- 9. 無法訪問全局變量在python
- 10. 無法訪問一個全局變量
- 11. 無法訪問全局變量功能
- 12. 無法訪問全局變量
- 13. 無法訪問javascript全局變量
- 14. 無法訪問一個全局變量
- 15. 無法訪問全局變量的值
- 16. 如何從對象訪問全局方法?
- 17. python訪問方法中的全局變量。
- 18. 在全局可訪問的插件中製作一個方法?
- 19. MFC - 全局訪問DocumentView OnDraw(CDC * pDC)方法
- 20. 全局訪問類實例 - 最佳設計方法?
- 21. 訪問Codeigniter中混淆方法的全局變量?
- 22. 訪問全局方法與命名空間中的打字稿
- 23. 從函數內部訪問全局上下文的方法?
- 24. 更好的訪問全局類對象的方法C++
- 25. 從Javascript中使用對象方法訪問全局變量
- 26. 如何全局訪問UIImageView?
- 27. 訪問javascript全局變量
- 28. 訪問全局變量
- 29. 全局訪問變量
- 30. JSP訪問全局變量
這個問題是如此模糊,它可以指半打的東西。 – vikingosegundo
你是什麼意思?我想定義一個方法,一段代碼,可以通過我的應用中的任何UIViewController訪問。 – danielmhanover
所以你的意思是一個方法(單身)的實例?或者你是在談論一個班級,你是否會實例化並調用對象方法?你可以要求代表團。也許你想要全局C函數。無論如何 - 你應該說清楚。 – vikingosegundo