1. 修改類別文件名及類別方法。ios
開發SDK時一般會用到比較多的第三方的類別方法, 這樣的話, 開發者在使用你的SDK時, 由於他可能也會加一些第三方的開源庫, 好比都使用了NSString的md5類別文件。 因爲這兩個文件都是從網上下載來下的, 因此文件名是同樣的。 這樣在編譯時就會報錯。 而後就想到要去修改這個類別文件名, 等修改類別文件名後。 發現類別中的方法名是同樣的, 而ios在調用兩個相同方法的類別方法時, 不能肯定其調用的哪一個方法, 但能夠確定地是隻會調用一個類別方法, 若是剛好開發者本身又修改了這個類別方法, 那就有問題了。 服務器
因此在SDK開發過程當中, 須要修改引入進來的類名, 及方法名, 建議添加項目前綴, 最好是三個字母的, 如NAB, (兩個字母爲蘋果本身保留使用)ui
2. 在開發SDK時, 若是發現某個方法命名時比較困難, 那麼幾乎能夠確定的是, 這個方法藕合度過高,須要再次進行分解。this
3. 開發SDK時, 須要考慮到升級的問題, 而且能夠指定某些版本必須強制升級。 (以防某些版本到後期發現有明顯問題, 須要及時替換)接口
4. 開發SDK時, 須要留出一個接口, 能經過後臺服務器強制關閉掉某個接入應用的調用。 (這可能會發生在惡意地攻擊行爲, 以及非惡意地使用行爲,如某應用頻繁自動重啓事故,每次重啓都會調用我們的SDK,而後就會使得我們的SDK服務器壓力陡增), 這個時候, 若是後臺能根據這個應用的APP ID啥的, 強制關閉它發的請求,或者屏掉他的請求, 你會發現世界如此美好。md5
5. 統計方面, SDK存儲每一個接口調用的次數,以在必定的狀況下發送給服務器, 便於後期分析某些接口是否有問題,或者是根本就沒有用戶使用的狀況。開發
6. 有些SDK使用的前提條件,最好是在編譯期就提示給用戶,而不是在運行期, 可使用相似下面代碼來進行提示io
#warning - Release scheme, this is not work.編譯
#if !__has_feature(objc_arc)後臺
#error iBeaconSDK requires automatic reference counting
#endif