那些在學習iOS開發前就應該知道的事(part 2)

來源:互聯網
上載者:User

標籤:

英文原文:Things I wish I had known before starting iOS development—Part 2

http://www.cocoachina.com/ios/20150611/12111.html

如果你還沒讀這篇文章的第一部分,請先讀完了再來看第二部分。

  • 那些在學習iOS開發前就應該知道的事(part 1):設計師設計出來了一個不錯的引導介面,然而當我看到設計稿的時候,我們的app也沒幾天就要上線了……

在第一部分中,我討論了學習iOS開發的一些基本問題。第二部分將更多地討論一些實際問題,這些問題都是你在開發iOS應用時會遇到的。

Debugging

毋庸置疑,你在開發應用的過程中一定會遇到很多錯誤和異常。比如,你會遇到NSInvalidArgumentException,遇到NSInternalInconsistencyException,還會遇到“0xfaded322”這種錯誤碼。有時候你可以在Stack Overflow或Quora上找到答案,但大部分時候你得自力更生。

Xcode具有斷點、視圖調試和日誌的功能,是debug的不二之選。但畢竟孤掌難鳴,你仍需為它找些得力的幫手。

1.Pony Debugger

 

square/PonyDebugger:PonyDebugger - 使用Chrome Developer Tools,為你的native iOS應用進行遠程網路和資料調試。

square開發了這個強大的開源工具。它是一個遠端偵錯工具,類似於用戶端庫和閘道伺服器的結合體。它在web瀏覽器上使用Chrome Developer Tools,對應用的網路流量和資料存放區進行調試。作為一個強大的網路調試器,PonyDebugger允許使用者即時查看應用的網路請求。它還有另一個酷酷的功能,就是可以遠端偵錯iOS應用的核心資料棧。

2.Cocoa Lumberjack

 

CocoaLumberjack:CocoaLumberjack - 快速、簡單,強大、靈活。它就是CocoaLumberjack, 一款好用的Mac和iOS日誌架構。

CocoaLumberjack,它快速、簡單,強大、靈活,是一款好用的Mac和iOS日誌架構。如果你想找一款強大的日誌工具,希望它具有自訂格式化這樣的炫酷功能,那CocoaLumberjack就是你的菜。

3.Reveal App

 

Reveal:Reveal - iOS應用的runtime視圖調試。

雖然視圖調試已經被引入iOS,但Reveal無疑在調試的細節方面更加強大。它是收費應用,但絕對物有所值。它有一些非常好用的功能,如Auto Layout Inspection。

4.OHHTTPStubs

 

AliSoftware/OHHTTPStubs:OHHTTPStubs - 輕鬆stub你的網路請求。以虛擬網路資料測試你的應用,可自訂回應時間……

OHHTTPStubs庫可以輕鬆stub你的網路請求。它可以協助你:

  • 使用偽造的網路資料(stubbed from file)測試你的應用,並類比慢速網路以檢查應用在網路不良情況下的表現。

  • 從裝置中獲得偽造的網路資料,用於寫單元測試

資料存放區

可能大多數應用都需要將各種任務的資料存放區在本地。資料存放區是一個複雜的話題。它有很多選擇,每個選擇都對應一種情況。但我很喜歡Stack Overflow上的一種法則,用它來選擇資料存放區方式就很不錯。

  • 若資料完全符合記憶體且相對非結構化,則使用plist

  • 若資料完全符合記憶體且具有樹狀結構,則使用XML

  • 若資料與記憶體不匹配且具有圖形結構,同時應用不需要額外的查詢能力,則使用Core Data

  • 如果資料與記憶體不匹配且具有複雜結構,或應用需要關聯式資料庫提供的強查詢能力,則使用sqlite

  • 如果資料必須保密(例如密碼),則使用keychain。

下面列了一些資料存放區方面的庫,或許對大家有協助。

FMDB

 

ccgus/fmdb:fmdb - 圍繞SQLite建立的Cocoa / Objective-C的wrapper

如果你在項目中使用SQLite,此wrapper庫會使你的工作變簡單。

SSFKeychain

 

soffes/sskeychain:sskeychain - 簡單的Objective-C wrapper,Mac和iOS上的keychain可以使用

要在應用中儲存敏感性資料,你必須時刻使用keychain。這個庫可以簡化使用keychain資料存放區的過程。

Magical Record

MagicalRecord - 輕鬆管理Core Data

Core data非常難於管理。而這個庫可以讓你舒爽地管理Core Data。

網路

要想讓應用更有趣,你免不了要接入一些API。雖然iOS在對網路的支援方面表現良好,譬如它擁有NSURLSession、NSURLConnection和NSJSONSerialization,但我還是推薦你使用下面的庫。

AFNetworking

 

AFNetworking:AFNetworking - 令人拍案叫絕的iOS和OS X網路架構。

我認為這是有史以來最好的iOS庫之一,它的功能何止炫酷二字。但這些功能中最重要的或許是開發人員社區,他們每天都在使用這個庫,並為AFNetworking做出貢獻。一些iPhone、iPad和Mac上最火的應用都是由AFNetworking提供的支援。

Restkit

RestKit/RestKit:RestKit是在iOS和OS X上使用和構建RESTful web資源的架構。

Restkit具有精心設計的API,訪問和構建RESTful資源的過程如沐春風。如果你用core data進行資料存放區、用rest service進行資料讀取,那你的最佳選擇就是它——與Core Data完美整合的Restkit。

Alamofire

 

Alamofire/Alamofire:Alamofire - Swift下精緻的HTTP Networking。

喲喲切克鬧,Swift粉們不要鬧,煎餅果子來一套。下面就是為你們準備的東西了。Alamofire是一個精緻的網路程式庫,它具有一些Swift專享的強大功能。

你也可以在這裡找到很多其他的庫。

vsouza/awesome-ios

awesome-ios——精選的優質iOS生態系統,包括Objective-C和Swift項目。

依賴管理

我在前面的文章中提到過依賴管理,但重要的問題要說兩遍!在這裡我還要給它細細講一發。在項目中,你主要有三種管理依賴的方式。

CocoaPods

CocoaPods.org:iOS和Mac項目的依賴管理器。

CocoaPods是Swift和Objective-C Cocoa項目的依賴管理器。它擁有將近一萬個庫,可以協助你輕鬆擴大項目規模。要想管理Ruby Gems這種依賴,實踐中最有效方法就是它了。

Google開發人員做了一個YouTube視頻,解釋了為什麼要在你的項目中使用CocoaPods。小心笑尿。

點此觀看視頻:Route 85: An Introduction to CocoaPods

Github Submodules

你還可以使用git submodules,在項目中以sub repos形式管理依賴。子模組相對於Cocoapods的優勢在於子模組也是sub-repos——這不僅是指git和git GUIs逐漸認可並更加支援它們,也意味著你的依賴可以將git repos和廣闊的世界串連起來,而CocoaPods卻不能。

但git submodules也有自己的問題:項目中沒有那些你所依賴的代碼的來源。它只是指向了子模組庫。而大多數時間你根本不會去管這個庫。

Carthage

 

Carthage/Carthage:Carthage - 簡單、去中心化的Cocoa依賴管理器。

Carthage旨在為Cocoa應用提供最簡單的架構添加方式。Carthage使用xcodebuild建立framework binaries,把整合工作留給了使用者。CocoaPods的方法更簡單易用,而Carthage的方法更靈活溫和。

不幸的是,Carthage也有一個巨大缺陷——僅支援iOS 8及以上版本

測試

大多數人一提到應用測試就會呵欠連連。但如果沒有測試的話,說不巧哪天你的應用就突然崩潰了。發布應用時,你一定得先進行深度測試,保證使用者得到最佳體驗。

這裡有很多測試架構,它們可以簡化測試工作。

XCTest

XCTest是一個單元測試架構,包含在Xcode中。它支援把單元測試作為項目編譯過程的一部分。XCTest與XCode高度整合,因此提供了持續整合支援和覆蓋率測試這樣的功能。

KIF

 

kif-framework/KIF:KIF - Keep It Functional - iOS功能測試架構

KIF是Keep It Functional的縮寫。它由Square開源,是一款iOS一體化測試架構。它利用其可訪問性——即系統讓訪問不能顯示的應用成為可能,輕鬆實現了iOS應用的自動化。

Kiwi

 

kiwi-bdd/Kiwi:Kiwi - BDD for iOS

Kiwi是iOS開發的Behavior Driven Development庫。其目標是提供一個安裝和使用都非常簡單的BDD庫。

Quick

 

Quick/Quick:Quick - Swift (以及Objective-C)的測試架構。

Quick是Swift和Objective-C的一款行為驅動的開發架構。它由RSpec、Specta和Ginkgo開發。與Quick並肩戰鬥的是Nimble——一款為測試服務的匹配架構。

我嘗試在本文中講盡量多的技術問題。跳入iOS開發的大坑之後,你就能用得到上我說的這些東西了。關於iOS開發需要說的實在太多,所以在這兒我沒有談到營銷之類的話題。如果你想看的話,那就等我的下一篇文章吧!

那些在學習iOS開發前就應該知道的事(part 2)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.