回答
代表是設計模式使用面向對象的語言,它允許對象「調用」未知代碼來執行該對象本身無法有效執行的活動或計算。比方說,你有一個類犬:
@protocol DogDelegate;
@interface Dog : Wolf <Domesticated>
- (void)bark;
- (void)tiltHeadAdorably;
- (void)playWithToy: (Toy *)aToy;
@property (readonly) Toy *favoriteChewToy;
@property (readwrite, assign) id <DogDelegate> delegate; // "DELEGATE" PROPERTY DECLARED HERE
@end
的委託對象通常是通過實例化Dog
,並通過該實例呼籲做的事情,狗本身不能做的代碼的形式提供。例如,考慮DogDelegate
協議的這個接口,它定義什麼Dog
的委託對象有望做:
@protocol DogDelegate <NSObject>
@required - (void)letDogOut: (Dog *)aDog;
@required - (void)letDogIn: (Dog *)aDog;
@optional - (void)scratchDog: (Dog *)aDog forTimeInterval: (NSTimeInterval)duration;
@end
在這種情況下,DogDelegate
實例往往是Dog
的所有者(和,在Objective-C中,代表通常擁有一個對象,所以這與隱喻良好地排成一行。)狗,當它需要出去...狗的活動...將要求它的代表執行-letDogOut:
方法,把狗放在後院。完成後,它會要求其代表執行-letDogIn:
方法,將狗帶回內部。當狗想要親情,如果代表能夠,它會要求代表使用-scratchDog:forTimeInterval:
來劃傷它一段時間。
委託是控制整個應用程序的對象。它顯示了主窗口,並會告訴應用程序在啓動和關閉時該執行什麼操作。它基本上是你的應用程序的指揮中心。使用它的最好方法是調用其他控制器來顯示一些NIBS。 iPhone應用程序中的委託實際上沒有任何特殊之處,但有一些特殊的方法被調用。
感謝您的回覆。我想問一下'NIBS'是什麼? – Questions 2010-07-06 02:40:22
您正在考慮應用程序委託,它是特定對象的特定委託,但不是委託的最終和全部;它們遍及Cocoa和各種其他Objective-C框架。 (Nibs是.NIB文件;來自Interface Builder的接口文件。) – 2010-07-06 02:42:06
NIB是一個擴展名爲xib的文件,它們是您的應用程序的視圖。 @jonathon - 他在iPhone應用程序中要求回合代表... – 2010-07-06 02:43:00
代表是蘋果公司大量採用的設計模式。簡而言之,將其想象爲「我負責處理......」。其中......是通知,事件,協議等。例如,您的AppDelegate
負責處理您的App
設置,顯示和啓動。
請記住我過於簡化它。但我相信如果你需要的話,有人可以提供更詳細的答案。
委託與JS中的回調函數(例外情況是委託是類型安全的)是一回事。例如,如果您在JS中執行Ajax,則聲明一個回調函數,以便在Ajax調用完成。以同樣的方式,您將聲明一個委託函數來調用,例如,當歌曲選擇對話框關閉時。
- 1. iPhone應用程序中的「Cocoa」意味着什麼
- 2. 什麼%*%意味着R中
- 3. 在我的xib文件中委託給文件所有者意味着什麼?
- 4. 對於WPF應用程序「啓用應用程序框架」意味着什麼?
- 5. 構建LDAP V3兼容應用程序意味着什麼?
- 6. 什麼應用程序準備意味着在iTunes Connect
- 7. 'COB'在編程中意味着什麼?
- 8. \在編程中意味着什麼?
- 9. 什麼?意味着iOS的
- 10. 回收應用程序池對應用程序意味着什麼
- 11. 在AngularJS中結尾意味着什麼double意味着
- 12. 「MyIdentifier」在Objective-c或iPhone編程中意味着什麼
- 13. iPhone - 寫在應用程序委託
- 14. void **意味着什麼
- 15. PREEMPTIVE_XE_DISPATCHER這意味着什麼?
- 16. Field.Index.NOT_ANALYZED_NO_NORMS意味着什麼
- 17. HttpServletResponse.SC_BAD_REQUEST意味着什麼?
- 18. 什麼呢##意味着在$ {}
- 19. Solr意味着什麼?
- 20. 溢出意味着什麼?
- 21. 什麼===在PHP意味着
- 22. * | *這意味着什麼CSS?
- 23. 什麼<?意味着
- 24. 什麼。意味着在PHP?
- 25. %是什麼〜DP0意味着
- 26. 什麼-Dauto意味着
- 27. AccountExpirationDate意味着什麼?
- 28. 這是&意味着什麼?
- 29. $這意味着什麼PHP?
- 30. 什麼呢JDBC:HSQLDB:hsqlTempFiles意味着
謝謝你的回覆。這是非常詳細和有用的。我能意識到它是一個班級的控制嗎? – Questions 2010-07-06 02:45:05
我不確定你的意思是「控制一個班級」。如果你的意思是「我可以自己創建委託,並寫下它的代碼嗎?」那麼是的 - 這就是他們的目的。如果你的意思是「我可以選擇哪個對象是另一個對象的委託?」,那麼是的,並且默認情況下對象不具有*委託集,所以你必須*做到這一點。如果你的意思是「一個委託可以是'UIControl/NSControl'的一個實例嗎?」那麼是的,再次,儘管Apple的類通常不會爲其他類實現委託方法。 – 2010-07-06 02:49:20
非常感謝。我現在有了更好的理解。 – Questions 2010-07-06 02:55:03