ios協議
【iOS開發技術分享】協議與代理
【iOS開發技術分享】協議與代理
一、理解協議與代理
協議:
協議是一個方法簽名的列表,在其中可以定義若干個方法。根據配置,遵守該協議的類會去實現這個協議中規定的若干個方法。
代理:
代理是一個概念,很難用一個名詞去定義(如我們可以說協議其實就是一個方法列表)。它更像是一種關系,我要做某一個事情,但我自己不想去做這件事,我委託其他人幫我去做這件事。這個時候,這位其他人就是我的代理。
二、協議的使用
在定義協議時,可以通過@required與@optional來配置遵守這個協議必須去實現的方法和可以選擇的方法。譬如:
@protocol MyChooseDayViewDelegate<NSObject>
@required
- returnChooseDay:(id)myChooseDayView;
@optional
- hideThisView;
- changeDateFormatter:(NSString*)formatString;
@end
在定義的協議 MyChooseDayViewDelegate中,如果遵守該協議,就必須實現協議中的- returnChooseDay: 方法,同時可以根據實際程序要求去實現- hideThisView 與 - changeDateFormatter: 。
同時,協議支持對本身的一種擴展,譬如:
@protocol MyChooseTimeViewDelegate< MyChooseDayViewDelegate>
- doSomething;
@end
MyChooseTimeViewDelegate
擴展了MyChooseDayViewDelegate這個協議,也就是說,假如遵守了MyChooseTimeViewDelegate的話,也必須實
現MyChooseDayViewDelegate中的方法(@required)使用分類的話,就是在定義類的頭文件中使用<>
將所需要的協議引入,如果引入多個協議,用","分隔,譬如:
@interface MyClassView:UIViewController <MyChooseDayViewDelegate, UIAlertViewDelegate>
//TODO: balabalabala...
@end
想要檢查某個類是否實現了某個協議或者某個類是否實現了某個協議的方法,可以通過以下方式來進行測試
//獲取某個對象
MyClassView *myClassView = xxxxxxx;
//判斷該對象是否實現了MyChooseDayViewDelegate協議
if([myClassView conformToProtocol:@protocol (MyChooseDayViewDelegate)]){
//TODO: balabalabala...
}
//判斷對象是否實現了某個方法就用我們經常會使用到的
if([myClassView responseToSelector:@selector(xxxx)]){
//TODO: balabalabala...
}
三、代理
代理在iOS開發會被經常使用,而且代理的使用往往配合著協議。我重復一次我對他的理解,我要做某一個事情,但我自己不想去做這件事,我委託其他人幫我去做這件事。
舉例來說,我在辦公室里正在寫代碼,突然發現口
很渴像喝瓶冰百事,但下樓是件麻煩的事情,我不願意下樓。這個時候我想起小賣部可以商品加價2元就外送到家服務,我就打電話給小賣部,委託小賣部給我送一
瓶水上來。這個時候,小賣部就是我的代理,我委託他幫買水並送上來。這個例子中小賣部是我的代理,商品加價2元外送到家服務就是商品買賣協議(這個叫法肯
定不是最佳的,姑且這么叫吧)中的一個方法。
不要覺得麻煩,我們再最後理一遍,小賣部遵守商品買賣協議,我讓小賣部成為了我的代理,代替我完成了買瓶冰百事的事情。
以iOS開發的角度來說,UIViewController想使用一個tableview,需要遵守UITableviewDataSource,UITableViewDelegate這2個協議,同時設置tableview的代理為自身,才可以完整的實現Table。
四、代理與協議的使用
我盡可能的用代碼來進行描述,但首先需要進行一些context鋪墊
我想實現的功能:我要自定義一個View,這個
view可能展示了我自己項目中特定的一些信息,它可能是若干控制項的組合,譬如UITextField、UISwitch、UIDatePicker、
balabalabala...我們姑且叫這個view為myInformationView 我在一個ViewController使用了這個
view,為了方便,這個ViewController就叫myRootViewController。在使用這個myInformationView
時,我需要即時的在myRootViewController獲取並做相應的處理。這是我想實現的功能。
接下來,就是開始寫代碼的時刻:
1.首先是一個protocol
#import <Foundation/Foundation.h>
@class MyInformationView;
@protocol MyInformatioViewDelegate<NSObject>
@required
@returnValueToShow:(MyInformationView*)myInformationView;
@end
2.MyInformationView
#import <UIKit/UIKit.h>
@interface MyInformationView : UIView
@property (nonatomic, strong) id<MyInformationViewDelegate> myDelegate;
- (id)initWith......//初始化視圖的方法
//所需要的屬性和方法根據實際需要再行添加
@end
#import "MyInformationView.h"
@interface MyInformationView()
@end
@implementation MyInformationView
@synthesize myDelegate = _myDelegate;
//Todo: 處理一些初始化方法和其他一些事件
// changeMyInformationData 是操作此view可能產生的數據變動。它可能是選擇器變動、點擊按鈕等等,但我們並不想在此view處理它,因為它的變動可能對調用此view的controller造成影響,所以...
- (void) changeMyInformationData:(id)sender
{
//TODO:數據變動....
if ([self.myDelegate respondsToSelector:@selector(returnValueToShow:)]) {
[self.myDelegate returnValueToShow:self];
}
}
@end
3.ViewController
這里就不寫代碼了,在頭文件中聲明此類遵守MyInformationViewDelegate協議。在實現文件(.m)中,調用MyinfomationView的時候,設置代理成自己,
MyInformation *myInfoView = [[MyInformation alloc] init.......];
myInfoView.myDelegate = self;
然後實現協議中要求實現的方法
- (void)returnValueToShow:(MyInformationView*)myInfoView
{
//TODO:做想做的事情
}
Ⅱ ios藍牙時通過什麼協議實現的
首先,你要了解你的目的是什麼,一般的IOS藍牙開發有以下三種目的:
1. IOS設備和IOS設備之間交互
好消息是:ios6.0可以把iPhone手機當從設備了,可以兩台iPhone通過藍牙通信傳數據了,有點類似spp協議
壞消息是:我們需要的不是這種模式
這種模式通常用於兩個使用IOS設備的土豪之間互相切磋游戲,玩個飛車什麼的,需要注意的是
2. IOS設備與MFI認證設備交互
什麼是MFI認證呢?意思是(Make For ipod/ipad/iphone),只有少數的硬體廠商才有蘋果的MFI認證,如果你看到這,你的藍牙設備還沒設計,而且想發布在AppStore上,而且打算使用藍牙4.0以下(4.0就不需要MFI了,福音),那你還是找個MFI認證的硬體開始做吧,我們公司已經有產品了,不可能重新設計,方案Pass了。
好消息是:如果你的藍牙模塊還沒設計,打算在AppStore上發布,打算使用藍牙4.0以下(IOS設備都兼容),那你就抓緊找MFI認證的藍牙模塊吧
壞消息是:我們不可能重新設計,所以舍棄
3. IOS設備與非IOS設備交互
這就是我們的現狀了,根據這個現狀,我們能分析出兩種情況:
a. 我想做藍牙4.0以下的,這樣iphone4也能用了
好消息:確實可以兼容iphone4,但是由於蘋果封閉,沒有那個API給你調,蘋果上也根本檢索不到非IOS設備,所以你就需要越獄了,調用私有Api連接設備
壞消息:只有越獄的手機才能用,發布到AppStore是妄想
b. 我想做藍牙4.0的,不全兼容也沒事,我想發布在AppStore上
好消息:蘋果開放了4.0的BLE通道,你可以用BLE通道通信,而且4.0設備也能檢索到
壞消息:對IOS版本和IOS設備雙重要求,肯定不能全兼容了
所以,根據你自己的實際情況,選擇方案,現總結出以下幾種方案:
1. 情景:藍牙2.0,發布在AppStore上
答:使用MFI認證的藍牙模塊設計你的藍牙產品
特點:不越獄就能用,IOS設備全兼容
2. 情景:藍牙2.0,不用MFI
答:不能用蘋果的Api了,使用私有Api連接設備
特點:只能越獄的手機才能用了,IOS設備全兼容
3. 情景:藍牙4.0
答:使用BLE通道
特點:IOS設備不完全兼容,無需越獄,無需使用MFI,可發布在AppStore上
注意:一定要看你的藍牙版本,這樣才能選擇方案,我們現在設備的版本是2.0,但是Boss想要發布在AppStore上,所以打算升級成4.0的,只有這么辦了
Ⅲ 現在iOS上的IM都用什麼協議或者框架來實現
xmpp,但是開發的話一般小公司都是接第三方即時聊天功能, 不會自己去寫服務端和客戶端,因為那樣比較浪費時間如果說你們公司的項目嚴密度非常高,信息不想透漏給第三方,我建議還是自己組建一個團隊, 有一個很牛的後台來開發im的服務端,也就是使用socket,或者現成的xmpp協議上開發服務端, 前台做客戶端。 然後實現即時通訊功能。
Ⅳ ios最終用戶許可協議 有什麼用
本《最終用戶使用許可協議》(以下稱《協議》)是您(個人或單一實體)與上海盛大網路發展有限公司之間有關上述網路游戲軟體產品(即網路游戲《熱血傳奇》,英文名《Legend of Mir II》,以下簡稱「軟體產品」)使用的法律協議。
本「軟體產品」包括計算機軟體,並可能包括相關網路伺服器、網站、電子媒體、印刷材料和「聯機」或電子文檔。您一旦安裝、復制、訪問、充值或以其它方式使用「軟體產品」,即表示您同意接受本《協議》各項條款的約束。如您不同意本《協議》中的條款,請不要安裝或使用「軟體產品」。
1. 許可權利的授予。本《協議》授予您下列權利:指定應用軟體的安裝使用。您可在許可生效的時間內將其安裝在自己使用的聯網計算機、工作站上並以相關方式互相作用於(「運行」)本「軟體產品」的一份副本。其他任何形式的未經許可的安裝、使用、訪問、顯示、運行以及轉讓,都將被視為對《協議》的侵犯。
2. 依本合同規定,著作權人僅授權本產品的全部或部分內容在一台計算機使用。產品可以載入個人電腦或永久存取裝置的方式使用。本產品可由一部個人電腦移轉到另一部個人電腦使用,但不得同時存在於兩部電腦中。依本合同第9項移轉給他人時,使用者載入個人電腦的部分應予以刪除,不得留存使用。
3.限制性行為或活動
侵害線上游戲公平性的行為包括但不限於:
3.1 利用反向工程、編譯或反向編譯、反匯編等技術手段製作軟體對游戲進行分析、修改、攻擊,最終達到作弊的目的;
3.2 使用任何外掛程序或游戲修改程序,對線上游戲軟體進行還原工程、編譯或解碼,包括修改本軟體所使用的任何專有通訊協議,或對動態隨機存取內存(RAM)中資料進行修改或鎖定;
3.3 使用異常的方法登陸游戲、使用網路加速器等外掛軟體或機器人程式等惡意破壞服務設施、擾亂正常服務秩序的行為;
3.4 傳播外掛、封包、加速,及其它各種作弊軟體程序,或組織、教唆他人使用此類軟體程序,或銷售此類軟體程序而為私人或組織謀取經濟利益;
3.5 使用任何方式或方法,試圖攻擊提供游戲服務的相關伺服器、路由器、交換機以及其他設備,以達到非法獲得或修改未經授權的數據資料、影響正常游戲服務,以及其他危害性目的的任何行為;
3.6 利用線上游戲系統可能存在的技術缺陷或漏洞而以各種形式為自己及他人牟利。
4. 對反向工程(Reverse Engineering)、反向編譯(Decompilation)、反匯編(Disassembly)的限制。您不得對本「軟體產品」進行反向工程(Reverse Engineering)、反向編譯(Decompile)或反匯編(Disassemble),但盡管有這項限制,如適用法律明示允許上述活動,則不在此限。
5. 對使用外掛的游戲附加程序的限制。您不得設計、編制或使用任何可能危害上述軟體產品正常運行、或破壞軟體中設計的游戲平衡性、或損害其他用戶正常使用權利的附加性游戲程序或工具。任何設計、編制或使用此類程序的行為,都將被視為對《協議》的違反,盛大網路有權對此採取一切必要的處理措施,包括直接刪除發生此類行為的用戶賬號,並保留採取進一步法律措施的權利。
6. 服務條款的確認和接納。本「軟體產品」的所有權和運作權歸上海盛大網路發展有限公司。盛大網路提供的服務完全按照其發布的章程、服務條款和操作規則嚴格執行。您應該遵守盛大網路制定的上述管理規定。如果您發生違反此類管理規定的行為,盛大網路可終止本《協議》並停止您使用「軟體產品」的權力。如此類情況發生,您必須銷毀「軟體產品」的所有副本及其所有組成部分。
7. 用戶必須的設備和須提供的信息。盛大網路提供可使用的「軟體產品」,並運用自己的網路系統通過國際互聯網路(Internet)為用戶提供服務。同時,用戶必須:
(1)自行配備上網的所需設備, 包括個人電腦、數據機或其他必備上網裝置。
(2)自行負擔個人上網所支付的與此服務有關的電話費用、網路費用。
基於盛大網路提供服務的重要性,用戶應同意:
(1)提供詳盡、准確的個人資料。
(2)不斷更新注冊資料,符合及時、詳盡、准確的要求。
如果用戶提供的資料包含有不正確的信息,盛大網路保留結束用戶使用網路服務和使用「軟體產品」資格的權利,用戶由於沒有提供正確的資料而產生的任何後果盛大網路不承擔任何責任。
8. 拒絕提供擔保。用戶個人對網路服務的使用承擔風險。盛大網路對此不作任何類型的擔保,不論是明確的或隱含的。盛大網路不擔保服務一定能滿足用戶的要求,也不擔保服務不會受中斷,對服務的及時性,安全性,出錯發生及可能發生的用戶損失都不作任何形式的擔保。
9. 有限責任:盛大網路對任何直接、間接、偶然、特殊及繼起的損害不負責任,這些損害可能來自:不正當使用網路服務,非法使用網路服務或用戶傳送的信息有所變動等方面。
10.使用者可以移轉本產品和所授之權利予他人,但是移轉時應連同所附產品使用手冊、授權合同等一並移轉,不得留存任一樣使用。且該轉得者視同接受遵守本合同規定。
11.除本合同有其他規定外,未經著作權人書面同意,使用者嚴格禁止有下列行為(無論是有償的還是無償的):
11.1復制、翻拷、傳播和在網路上陳列本產品的程序、使用手冊和其它圖文音像資料的全部或部分內容。
11.2公開展示和播放本產品的全部或部分內容。
11.3出租本產品於他人。
11.4對本產品的程序、圖象、動畫和音樂進行還原、反編譯、反匯編、剪輯、翻譯和改編等任何修改行為。
11.5修改或遮蓋本產品程序、圖象、動畫、包裝和手冊等內容上的產品名稱、公司標志、版權信息等內容。
11.6以本產品作為營業使用。
11.7其它違反著作權法、計算機軟體保護條例和相關法規的行為。
對於違反上訴內容的行為,本產品的授權合同立即停止,並可能引起法律訴訟。
12. 法律適用
12.1 盛大網路及其原始授權人擁有《熱血傳奇》線上游戲相關的一切合法版權,受《中華人民共和國著作權法》的保護,任何侵害游戲公平性的事件均被視為針對該權利的違法行為,應按《中華人民共和國著作權法》第四十六、四十七條之規定承擔相應法律責任。
12.2 本條款作為《用戶服務條款》的補充性內容,是用戶購買了游戲服務後,即構成的與盛大網路的合同關系的協議內容,受《中華人民共和國合同法》的保護,任何侵害游戲公平性的事件均被視為違反該協議的違法行為,應按《中華人民共和國合同法》第四章和第七章之規定承擔相應法律責任。
12.3 任何侵害游戲公平性的事件還會被視為危及信息安全的行為,肇事人將可能違反中華人民共和國《計算機信息系統安全保護條例》第二十條、《計算機軟體保護條例》第三十條、《計算機信息網路國際聯網安全保護管理辦法》第六條之規定,而 承擔相應法律責任。
12.4 如侵害游戲公平性的行為系其它線上游戲相關企業所實施,或其僱傭或教唆他人實施,其行為亦被視為違反《中華人民共和國反不正當競爭法》,並承擔相應法律責任。
13.修改和解釋權:盛大網路有權對本協議中的有關條文內容做出解釋或更正,本協議和用戶服務條款及其他管理規定的最新版本會在游戲官方網站(mir2.sdo.com)上加以公布,用戶對此表示接受並將切實遵守。
本《協議》受中華人民共和國法律管轄;本「軟體產品」受著作權法及國際著作權條約和其它知識產權法和條約的保護;本「軟體產品」只許可在給定范圍和時間內使用,而不出售其原代碼和其他任何相關知識產權權利。
Ⅳ ISO七層協議每一層對應的設備和各層相應的協議
OSI的7層從下到上分別是:
應用層、表示層、會話層、傳輸層、網路層、數據鏈路層、物理層。
一、物理層:
1、傳輸協議:IEEE802.1A、IEEE802.2
2、傳輸單元:bit-flow比特流
3、主要功能設備/介面:光纖、雙絞線、中繼器和集線器 & RJ-45(網線介面)
二、數據鏈路層:
1、傳輸協議:ARP、MAC、FDDI、Ethernet、Arpanet、PPP、PDN
2、傳輸單元:frame幀
3、主要功能設備/介面:網橋、二層交換機
三、網路層:
1、傳輸協議:IP、ICMP、ARP、RARP
2、傳輸單元:數據包(packet)
3、主要功能設備/介面:路由器、三層交換機
四、傳輸層:
1、傳輸協議:TCP、UDP
2、傳輸單元:Segment/Datagram
3、主要功能設備/介面:四層交換機
五、會話層:
1、傳輸協議:SMTP、DNS
2、傳輸單元:報文
3、主要功能設備/介面:QoS
六、表示層:
1、傳輸協議:Telnet、SNMP
2、傳輸單元:報文
3、主要功能設備/介面:–
七、應用層:
1、傳輸協議:FTP、TFTP、Telnet、HTTP、DNS
2、傳輸單元:報文
3、主要功能設備/介面:–
(5)ios協議擴展閱讀:
TCP是面向連接的,UDP是面向無連接的。TCP在通信之前必須通過三次握手機制與對方建立連接,而UDP通信不必與對方建立連接,不管對方的狀態就直接把數據發送給對方
OSI七層模型是一個理論模型,實際應用則千變萬化,因此更多把它作為分析、評判各種網路技術的依據;對大多數應用來說,只將它的協議族(即協議堆棧)與七層模型作大致的對應,看看實際用到的特定協議是屬於七層中某個子層,還是包括了上下多層的功能。
tcp是流模式,udp是數據包模式。tcp只要不超過緩沖區的大小就可以連續發送數據到緩沖區上,接收端只要緩沖區上有數據就可以讀取,可以一次讀取多個數據包,而udp一次只能讀取一個數據包,數據包之間獨立。
順序編號:tcp在傳輸文件的時候,會將文件拆分為多個tcp數據包,每個裝滿的數據包大小大約在1k左右,tcp協議為保證可靠傳輸,會將這些數據包順序編號。
網路-網路七層協議
Ⅵ IOS7層協議是什麼
是OSI七層協議吧。
OSI 七層模型稱為開放式系統互聯參考模型 OSI 七層模型是一種框架性的設計方法
OSI 七層模型通過七個層次化的結構模型使不同的系統不同的網路之間實現可靠的通訊,因此其最主
要的功能使就是幫助不同類型的主機實現數據傳輸
物理層 : O S I 模型的最低層或第一層,該層包括物理連網媒介,如電纜連線連接器。物理層的協議產生並檢測電壓以便發送和接收攜帶數據的信號。在你的桌面P C 上插入網路介面卡,你就建立了計算機連網的基礎。換言之,你提供了一個物理層。盡管物理層不提供糾錯服務,但它能夠設定數據傳輸速率並監測數據出錯率。網路物理問題,如電線斷開,將影響物理層。
數據鏈路層: O S I 模型的第二層,它控制網路層與物理層之間的通信。它的主要功能是如何在不可靠的物理線路上進行數據的可靠傳遞。為了保證傳輸,從網路層接收到的數據被分割成特定的可被物理層傳輸的幀。幀是用來移動數據的結構包,它不僅包括原始數據,還包括發送方和接收方的網路地址以及糾錯和控制信息。其中的地址確定了幀將發送到何處,而糾錯和控制信息則確保幀無差錯到達。
數據鏈路層的功能獨立於網路和它的節點和所採用的物理層類型,它也不關心是否正在運行 Wo r d 、E x c e l 或使用I n t e r n e t 。有一些連接設備,如交換機,由於它們要對幀解碼並使用幀信息將數據發送到正確的接收方,所以它們是工作在數據鏈路層的。
網路層: O S I 模型的第三層,其主要功能是將網路地址翻譯成對應的物理地址,並決定如何將數據從發送方路由到接收方。
網路層通過綜合考慮發送優先權、網路擁塞程度、服務質量以及可選路由的花費來決定從一個網路中節點A 到另一個網路中節點B 的最佳路徑。由於網路層處理路由,而路由器因為即連接網路各段,並智能指導數據傳送,屬於網路層。在網路中,「路由」是基於編址方案、使用模式以及可達性來指引數據的發送。
傳輸層: O S I 模型中最重要的一層。傳輸協議同時進行流量控制或是基於接收方可接收數據的快慢程度規定適當的發送速率。除此之外,傳輸層按照網路能處理的最大尺寸將較長的數據包進行強制分割。例如,乙太網無法接收大於1 5 0 0 位元組的數據包。發送方節點的傳輸層將數據分割成較小的數據片,同時對每一數據片安排一序列號,以便數據到達接收方節點的傳輸層時,能以正確的順序重組。該過程即被稱為排序。
工作在傳輸層的一種服務是 T C P / I P 協議套中的T C P (傳輸控制協議),另一項傳輸層服務是I P X / S P X 協議集的S P X (序列包交換)。
會話層: 負責在網路中的兩節點之間建立和維持通信。 會話層的功能包括:建立通信鏈接,保持會話過程通信鏈接的暢通,同步兩個節點之間的對 話,決定通信是否被中斷以及通信中斷時決定從何處重新發送。
你可能常常聽到有人把會話層稱作網路通信的「交通警察」。當通過撥號向你的 I S P (網際網路服務提供商)請求連接到網際網路時,I S P 伺服器上的會話層向你與你的P C 客戶機上的會話層進行協商連接。若你的電話線偶然從牆上插孔脫落時,你終端機上的會話層將檢測到連接中斷並重新發起連接。會話層通過決定節點通信的優先順序和通信時間的長短來設置通信期限
表示層: 應用程序和網路之間的翻譯官,在表示層,數據將按照網路能理解的方案進行格式化;這種格式化也因所使用網路的類型不同而不同。
表示層管理數據的解密與加密,如系統口令的處理。例如:在 Internet上查詢你銀行賬戶,使用的即是一種安全連接。你的賬戶數據在發送前被加密,在網路的另一端,表示層將對接收到的數據解密。除此之外,表示層協議還對圖片和文件格式信息進行解碼和編碼。
應用層: 負責對軟體提供介面以使程序能使用網路服務。術語「應用層」並不是指運行在網路上的某個特別應用程序 ,應用層提供的服務包括文件傳輸、文件管理以及電子郵件的信息處理。
Ⅶ iOS 協議問題
這不就指定了類型嘛,就和你寫<VTDListViewInterface>這個一樣,另外協議請用weak,避免循環引用
Ⅷ ios系統使用什麼網路協議
iOS 7中使用了一種被稱為多路TCP的全新網路協議。TCP是Transmission Control Protocol的簡稱,它是一種面向連接(連接導向)的、可靠的、基於位元組流的運輸層(Transport layer)通信協議,能夠允許像iPhone或者iPad這樣的設備同時使用多重介面,比如說同時使用蜂窩移動網路和WiFi進行數據傳輸。
Ⅸ ios中協議和委託(protocol、delegate)的使用方法
協議,類似於java或者c#語言中的介面,它限制了實現類必須擁有哪些方法。
它是對對象行為的定義,也是對功能的規范。
委託,委託是objective-c中使用非常頻繁的一中設計模式,它的實現與協議的使用是分不開的。下面鏈接是一些示例:
http://blog.sina.com.cn/s/blog_71715bf80101b9od.html
Ⅹ iOS中協議和延展的區別
上面的答案有幫助嗎?如果還有問題,請提出來,如果對答案滿意,請頂一下,並標記為採納答案,謝謝!