㈠ 以後作為一個程序員,做安卓程序員好還是ios程序員好,還是兩者都會精通
做IOS
然後做WINDOWS10的。。。FOR MOBILE。
安卓由於開放性和JAVA作為編程語言,很有機會被WINDOWS 10淘汰,現在安卓是積重難返,而且修改、調試很困難,還不如學IOS,至少IOS有老外肯付錢買應用。
其實感覺接下來就是微軟與蘋果公司手機操作系統的對決,至於蘋果會不會從滔覆轍,這就要拭目以待了。
感覺現在蘋果的CEO庫克把很多喬布斯好用的IOS編程上的特點都統統去掉了,導致現在IOS編程沒有以前的方便快捷,如果微軟能夠把握好,相信將會有一場龍爭虎鬥。
不過長遠來說,以後會不會發展到類似電腦的B/S開發架構,響應式開發,也只能拭目以待。。。
安卓什麼的就果斷棄坑別想了。。。
㈡ 函數式編程和響應式編程有什麼區別
1. 我暫且認為你說的RP是指Rx*框架的Reactive programming,(如果不是,就先認為是一下吧)
Rx*框架的RP,其實應該叫FRP(Functional Reactive Programming)(誤,感謝 邵成的指正,具體見補充部分),那和FP基本上就是一種派生(derive)關系了
FRP基本上就是面向非同步事件流的編程了,這個非同步事件流叫:Observable,一般叫:Stream
Stream就是一個 按時間排序的Events(Ongoing events ordered in time)序列
Stream是不可變(Immutability)的,任何操作都返回新的Stream, 且它是一個Monad(它有map和flatMap方法)。
FRP的關注點在Stream,而FP的關注點在(Type, Operate),Stream -> (Type, Operate)是一種泛化(generic),(Type, Operate) -> Stream 是一種派生。
RP本身是建立於觀察者模式之上的一種編程範式(級別同MV*),FP則更偏向底層解決一般化問題。
㈢ 關於iOS編程的問題
Application 的Delegate默認是與UIViewController關聯的,
重載didFinishLaunchingWithOptions
,在其中self.window.rootViewController = rootViewController;
即可。
㈣ 高級ios開發需要掌握哪些內容知乎
做IOS
然後做WINDOWS10的。。。FOR MOBILE。
安卓由於開放性和JAVA作為編程語言,很有機會被WINDOWS 10淘汰,現在安卓是積重難返,而且修改、調試很困難,還不如學IOS,至少IOS有老外肯付錢買應用。
其實感覺接下來就是微軟與蘋果公司手機操作系統的對決,至於蘋果會不會從滔覆轍,這就要拭目以待了。
感覺現在蘋果的CEO庫克把很多喬布斯好用的IOS編程上的特點都統統去掉了,導致現在IOS編程沒有以前的方便快捷,如果微軟能夠把握好,相信將會有一場龍爭虎鬥。
不過長遠來說,以後會不會發展到類似電腦的B/S開發架構,響應式開發,也只能拭目以待。。。
安卓什麼的就果斷棄坑別想了。。。
㈤ ios 怎麼應用響應式編程實現登錄
使用ReactiveCocoa實現iOS平台響應式編程
ReactiveCocoa和響應式編程
在說ReactiveCocoa之前,先要介紹一下FRP(Functional Reactive Programming,響應式編程),在維基網路中有這樣一個例子介紹:
在命令式編程環境中,a = b + c 表示將表達式的結果賦給a,而之後改變b或c的值不會影響a。但在響應式編程中,a的值會隨著b或c的更新而更新。
Excel就是響應式編程的一個例子。單元格可以包含字面值或類似」=B1+C1″的公式,而包含公式的單元格的值會依據其他單元格的值的變化而變化 。
而ReactiveCocoa簡稱RAC,就是基於響應式編程思想的Objective-C實踐,它是Github的一個開源項目,你可以在這里找到它。
關於FRP和ReactiveCocoa可以去看leezhong的這篇blog,圖文並茂,講的很好。
ReactiveCocoa框架概覽
先來看一下leezhong再博文中提到的比喻,讓你對有個ReactiveCocoa很好的理解:
可以把信號想像成水龍頭,只不過裡面不是水,而是玻璃球(value),直徑跟水管的內徑一樣,這樣就能保證玻璃球是依次排列,不會出現並排的情況(數據都是線性處理的,不會出現並發情況)。水龍頭的開關默認是關的,除非有了接收方(subscriber),才會打開。這樣只要有新的玻璃球進來,就會自動傳送給接收方。可以在水龍頭上加一個過濾嘴(filter),不符合的不讓通過,也可以加一個改動裝置,把球改變成符合自己的需求(map)。也可以把多
㈥ ios響應式編程框架reactivecocoa 好用嗎
不好用的,用安卓啊
㈦ ios的kvo和響應式編程一樣嗎
ReactiveCocoa 可以說是結合了函數式編程和響應式編程的框架,也可稱其為函數響應式編程(FRP)框架,強調一點,RAC雖然最大的優點是提供了一個單一的、統一的方法去處理非同步的行為,包括delegate方法
㈧ 響應式編程的優勢
什麼是響應式
響應式布局是Ethan Marcotte在2010年5月份提出的一個概念,簡而言之,就是一個網站能夠兼容多個終端——而不是為每個終端做一個特定的版本。這個概念是為解決移動互聯網瀏覽而誕生的。響應式布局可以為不同終端的用戶提供更加舒適的界面和更好的用戶體驗,而且隨著目前大屏幕移動設備的普及,用「大勢所趨」來形容也不為過。
2.2響應式的優點
1.響應式設計可以向用戶提供友好的Web界面,同樣的布局,卻可以在不同的設備上有不同排版,這就是響應式最大的優點,現在技術發展日新月異,每天都會有新款智能手機推出。如果你擁有響應式Web設計,用戶可以與網站一直保持聯系,而這也是基本的也是響應式實現的初衷。
2.響應式在開發維護和運營上,相對多個版本成本會降低很多。也無須花大量的時間在網站的維護上
3.方便改動,響應式設計是針對頁面的,可以只對必要的頁面進行改動,其他頁面不受影響。
㈨ iOS開發網路篇—Socket編程
一、網路各個協議:TCP/IP、SOCKET、HTTP等
網路七層由下往上分別為物理層、數據鏈路層、網路層、傳輸層、會話層、表示層和應用層。
其中物理層、數據鏈路層和網路層通常被稱作媒體層,是網路工程師所研究的對象;
傳輸層、會話層、表示層和應用層則被稱作主機層,是用戶所面向和關心的內容。
http協議對應於應用層
tcp協議對應於傳輸層
ip協議對應於網路層
三者本質上沒有可比性。 何況HTTP協議是基於TCP連接的。
TCP/IP是傳輸層協議,主要解決數據如何在網路中傳輸;而HTTP是應用層協議,主要解決如何包裝數據。
我 們在傳輸數據時,可以只使用傳輸層(TCP/IP),但是那樣的話,由於沒有應用層,便無法識別數據內容,如果想要使傳輸的數據有意義,則必須使用應用層 協議,應用層協議很多,有HTTP、FTP、TELNET等等,也可以自己定義應用層協議。WEB使用HTTP作傳輸層協議,以封裝HTTP文本信息,然 後使用TCP/IP做傳輸層協議將它發送到網路上。Socket是對TCP/IP協議的封裝,Socket本身並不是協議,而是一個調用介面(API),通過Socket,我們才能使用TCP/IP協議。
二、Http和Socket連接區別
相信不少初學手機聯網開發的朋友都想知道Http與Socket連接究竟有什麼區別,希望通過自己的淺顯理解能對初學者有所幫助。
2.1、TCP連接
要想明白Socket連接,先要明白TCP連接。手機能夠使用聯網功能是因為手機底層實現了TCP/IP協議,可以使手機終端通過無線網路建立TCP連接。TCP協議可以對上層網路提供介面,使上層網路數據的傳輸建立在「無差別」的網路之上。
建立起一個TCP連接需要經過「三次握手」:
第一次握手:客戶端發送syn包(syn=j)到伺服器,並進入SYN_SEND狀態,等待伺服器確認;
第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀態;
第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和伺服器進入ESTABLISHED狀態,完成三次握手。
握
手過程中傳送的包里不包含數據,三次握手完畢後,客戶端與伺服器才正式開始傳送數據。理想狀態下,TCP連接一旦建立,在通信雙方中的任何一方主動關閉連
接之前,TCP
連接都將被一直保持下去。斷開連接時伺服器和客戶端均可以主動發起斷開TCP連接的請求,斷開過程需要經過「四次握手」(過程就不細寫了,就是伺服器和客
戶端交互,最終確定斷開)
2.2、HTTP連接
HTTP協議即超文本傳送協議(HypertextTransfer Protocol ),是Web聯網的基礎,也是手機聯網常用的協議之一,HTTP協議是建立在TCP協議之上的一種應用。
HTTP連接最顯著的特點是客戶端發送的每次請求都需要伺服器回送響應,在請求結束後,會主動釋放連接。從建立連接到關閉連接的過程稱為「一次連接」。
1)在HTTP 1.0中,客戶端的每次請求都要求建立一次單獨的連接,在處理完本次請求後,就自動釋放連接。
2)在HTTP 1.1中則可以在一次連接中處理多個請求,並且多個請求可以重疊進行,不需要等待一個請求結束後再發送下一個請求。
由
於HTTP在每次請求結束後都會主動釋放連接,因此HTTP連接是一種「短連接」,要保持客戶端程序的在線狀態,需要不斷地向伺服器發起連接請求。通常的
做法是即時不需要獲得任何數據,客戶端也保持每隔一段固定的時間向伺服器發送一次「保持連接」的請求,伺服器在收到該請求後對客戶端進行回復,表明知道客
戶端「在線」。若伺服器長時間無法收到客戶端的請求,則認為客戶端「下線」,若客戶端長時間無法收到伺服器的回復,則認為網路已經斷開。
三、SOCKET原理
3.1、套接字(socket)概念
套接字(socket)是通信的基石,是支持TCP/IP協議的網路通信的基本操作單元。它是網路通信過程中端點的抽象表示,包含進行網路通信必須的五種信息:連接使用的協議,本地主機的IP地址,本地進程的協議埠,遠地主機的IP地址,遠地進程的協議埠。
應
用層通過傳輸層進行數據通信時,TCP會遇到同時為多個應用程序進程提供並發服務的問題。多個TCP連接或多個應用程序進程可能需要通過同一個
TCP協議埠傳輸數據。為了區別不同的應用程序進程和連接,許多計算機操作系統為應用程序與TCP/IP協議交互提供了套接字(Socket)介面。應
用層可以和傳輸層通過Socket介面,區分來自不同應用程序進程或網路連接的通信,實現數據傳輸的並發服務。
3.2 、建立socket連接
建立Socket連接至少需要一對套接字,其中一個運行於客戶端,稱為ClientSocket,另一個運行於伺服器端,稱為ServerSocket。
套接字之間的連接過程分為三個步驟:伺服器監聽,客戶端請求,連接確認。
伺服器監聽:伺服器端套接字並不定位具體的客戶端套接字,而是處於等待連接的狀態,實時監控網路狀態,等待客戶端的連接請求。
客戶端請求:指客戶端的套接字提出連接請求,要連接的目標是伺服器端的套接字。為此,客戶端的套接字必須首先描述它要連接的伺服器的套接字,指出伺服器端套接字的地址和埠號,然後就向伺服器端套接字提出連接請求。
連
接確認:當伺服器端套接字監聽到或者說接收到客戶端套接字的連接請求時,就響應客戶端套接字的請求,建立一個新的線程,把伺服器端套接字的描述發給客戶
端,一旦客戶端確認了此描述,雙方就正式建立連接。而伺服器端套接字繼續處於監聽狀態,繼續接收其他客戶端套接字的連接請求。
3.3、SOCKET連接與TCP連接
創建Socket連接時,可以指定使用的傳輸層協議,Socket可以支持不同的傳輸層協議(TCP或UDP),當使用TCP協議進行連接時,該Socket連接就是一個TCP連接。
3.4、Socket連接與HTTP連接
由
於通常情況下Socket連接就是TCP連接,因此Socket連接一旦建立,通信雙方即可開始相互發送數據內容,直到雙方連接斷開。但在實際網路應用
中,客戶端到伺服器之間的通信往往需要穿越多個中間節點,例如路由器、網關、防火牆等,大部分防火牆默認會關閉長時間處於非活躍狀態的連接而導致
Socket 連接斷連,因此需要通過輪詢告訴網路,該連接處於活躍狀態。
而HTTP連接使用的是「請求—響應」的方式,不僅在請求時需要先建立連接,而且需要客戶端向伺服器發出請求後,伺服器端才能回復數據。
很
多情況下,需要伺服器端主動向客戶端推送數據,保持客戶端與伺服器數據的實時與同步。此時若雙方建立的是Socket連接,伺服器就可以直接將數據傳送給
客戶端;若雙方建立的是HTTP連接,則伺服器需要等到客戶端發送一次請求後才能將數據傳回給客戶端,因此,客戶端定時向伺服器端發送連接請求,不僅可以
保持在線,同時也是在「詢問」伺服器是否有新的數據,如果有就將數據傳給客戶端。
這里我們使用Socket實現一個聊天室的功能,關於伺服器這里的就不介紹了
@interfaceViewController (){
NSInputStream *_inputStream;//對應輸入流
NSOutputStream *_outputStream;//對應輸出流
}
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *inputViewConstraint;
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@property (nonatomic, strong) NSMutableArray *chatMsgs;//聊天消息數組
@end
懶載入這個消息數組
//從主運行循環移除
//1.建立連接
//定義C語言輸入輸出流
//把C語言的輸入輸出流轉化成OC對象
//設置代理
//把輸入輸入流添加到主運行循環
//不添加主運行循環 代理有可能不工作
//打開輸入輸出流
//登錄
//發送用戶名和密碼
//在這里做的時候,只發用戶名,密碼就不用發送
//如果要登錄,發送的數據格式為 "iam:zhangsan";
//如果要發送聊天消息,數據格式為 "msg:did you have dinner";
//登錄的指令11NSString *loginStr =@"iam:zhangsan";
//把Str轉成NSData
//建立一個緩沖區 可以放1024個位元組
//返回實際裝的位元組數
//把位元組數組轉化成字元串
//從伺服器接收到的數據
//聊天信息
//刷新表格
//發送數據
//發送完數據,清空textField
//數據多,應該往上滾動
}
//監聽鍵盤
//獲取窗口的高度
//鍵盤結束的Frm
//獲取鍵盤結束的y值
㈩ 響應式編程與函數式編程哪個是未來的趨勢
我覺得還是
響應式編程
設計應該是主流趨勢了,現在這么多平台都可以上互聯網,誰知道用戶使用的是哪種平台了,你總不能設計多套素材放到伺服器吧,也太浪費空間了。所以響應式比較好。