hybride APP 設計思路 http://www.reibang.com/p/2c296dcb53ae
二十一種 設計模式
http://blog.raozhizhen.com/post/2016-05-22
生成器
https://my.oschina.net/daguoshi/blog/504084
生成器 原理解釋 和工廠模式的對比
http://blog.csdn.net/cctvzxxz1/article/details/39967961
生成器 模式講解
http://www.reibang.com/p/5d34a496e517
既然不信 何必茍且 既然相愛 何必懷疑
IOS 10 適配 系列0 iOS10 UserNotifications 框架解析
http://blog.csdn.net/jiang314/article/details/52502377
切記豹悬,要在不同的模擬器上運行一下再上架
切記士葫,適配的圖片要注意調整,要在不同的模擬器上進行調整
【Git入門之六】遠程倉庫
http://blog.csdn.net/jackystudio/article/details/12271839
Swift3.0 新特性
移除了取余運算符的浮點數取余功能
swift3.0 語法改變 關于字符串
http://blog.csdn.net/u012903898/article/details/52865690?locationNum=14&fps=1
https://itunes.apple.com/app/id1165667288
Swift3.0學習筆記----遍歷字符串
http://blog.csdn.net/a1610770854/article/details/52770073
app圖標生成軟件
http://www.cocoachina.com/bbs/read.php?tid=290247
加載xib 文件遇到的問題
this class is not key value coding-compliant for the key view
解決: 在加載controller 的xib 文件時候, 直接用 alloc init 即可
如何把代碼 推送到遠程git 上
1.在gitos 上創(chuàng)建項目
2.打開xcode 選擇checkout 到本地
3.在checkout 到本地的文件夾中創(chuàng)建新項目如贷,就可以push了
UITabBarItem 取消圖片渲染的3種方式
http://www.cnblogs.com/MyBlogZH/p/5522728.html
有些三方庫,pods 和 Carthage 都沒有效果 這個時候就要考錄手動拖入庫 有可能會報錯,去百度就行
或者三者同時進行谣拣,哪個成功了就用哪個
打印一個視圖包含了哪些子視圖
po [[self view] recursiveDescription]
后臺記得把 method 寫到表格中,方便我復制 不然老是點到URL跳轉瀏覽器
后臺 每個接口的errorDescribe 寫清楚族展,移動端只提示后臺返回的每個接口的errorDescribe 以后就是要改森缠,后臺那邊改一下移動端什么都不用變
二維碼生成 地址http://www.wwei.cn
所有文檔必須要有日期
是小寫 errorCode 還是大寫 ErrorCode 后臺老接口 改起來不方便 后臺返回的是大寫的ErrorCode 其他的都是小寫的
獲取版本更新 是小寫的ios 不是iOS
碼]iOS判斷是模擬器還是真機 跳至 [1] [全屏預覽]
一定要注意,檢測更新的appName 和 推送證書的(發(fā)給后臺的證書)名字仪缸,還有pushId里面的appName(我們公司叫推送尾綴) 要保持一致贵涵,不然會收不到推送信息,或者檢測不到新版本等
if TARGET_IPHONE_SIMULATOR//模擬器
elif TARGET_OS_IPHONE//真機
endif
學習輪播圖
/*< 這是注釋/
很好看的北京顏色 白棕色 [UIColor colorWithRed:0.275 green:0.350 blue:0.159 alpha:0.223];
UIViewContentMode 圖片顯示模式 http://www.reibang.com/p/7a286c84198b
車樂邦 使用指南
當你說的很爽的時候,記得這很危險宾茂!
探探UIViewController 聲明的周期的理解和 思維的擴展
load
initialize
init(initWithNibName)
loadView
viewWillDidLoad
viewWillAppear
viewDidAppear
viewWillDisappear
viewDidDisappear
viewWillUnload
viewDidUnload
dealloc
Objective-C 深入理解 +load 和 +initialize http://www.reibang.com/p/872447c6dc3f
load load 是在被添加到 runtime 時開始執(zhí)行
而且 調用順序
父類最先執(zhí)行瓷马,然后是子類,最后是 Category
initialize
收到第一條消息前跨晴,可能永遠不調用
覆蓋類中的方法决采,只執(zhí)行分類的實現
init(initWithNibName)
只做初始化操作
initWithFrame
只做初始化操作,因為傳進來的frame 經常為0 最好不要在這里面設置子view的frame
initWithCoder
從xib/storyboard中加載 不要在這里面設置frame
awakeFromNib
從文件中加載坟奥,可以在這設置frame
l
loadView
dealloc
不要調用[super dealloc] http://www.reibang.com/p/009759373271 http://www.reibang.com/p/5e70abc61530
釋放代理
http://www.reibang.com/p/ab39683f94ae
控制器的生命周期
控制器的加載過程
iOS 應用程序的生命周期
main 函數入口
應用程序的框架
layoutIfNeeded
setNeedsLayout 這兩個的區(qū)別
Main Run Loop
iOS應用程序的生命周期树瞭,狀態(tài)切換 MVC 講解 http://www.reibang.com/p/aa50e5350852
車樂邦Bug 每次升級的時候都會丟失自定義鈴聲
iOS 事件 https://developer.apple.com/library/content/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/Introduction/Introduction.html
事件: 觸摸屏幕,搖晃手機 遠程多媒體控制
ImageProcess 圖片加工
Paypal 開發(fā)中文文檔 http://download.csdn.net/detail/u014220518/9606515
Paypal iOS 集成教程1.http://blog.csdn.net/u014220518/article/details/52239375
集成教程2.http://blog.csdn.net/aas319/article/details/50549995
集成教程3.http://www.reibang.com/p/bfe55c889645
集成教程4.http://www.reibang.com/p/812d9f010b5b
Paypal demo https://github.com/paypal/PayPal-iOS-SDK
Paypal API https://developer.paypal.com/docs/api/
iOS中的URL Scheme http://git.devzeng.com/blog/ios-url-scheme.html
ios開發(fā)之使用bundle來管理資源文件 http://blog.csdn.net/chenyong05314/article/details/18226301
使用 pod install 還是 pod update 爱谁? http://www.reibang.com/p/a977c0a03bf4
iOS中的靜態(tài)庫與動態(tài)庫晒喷,區(qū)別、制作和使用 http://www.reibang.com/p/90f5ec723175
iOS10 給控件切圓角. http://www.reibang.com/p/50b45ac97ae3
iOS開發(fā) 之 不要告訴我你會用NSTimer! http://www.reibang.com/p/330d7310339d
Xcode6在iPhone5+iOS7模擬器上編譯访敌,上下有黑邊問題 http://blog.csdn.net/gf771115/article/details/43450681
Xcode8設置好約束凉敲,但是打印出來全部是(0,0寺旺,1000爷抓,1000)
在- (void)viewDidLayoutSubviews 中
加上這句 你的控件view layoutIfNeed
今天也遇到這個問題,剛剛解決的
還是不懂可以去我的簡書留言
http://www.reibang.com/users/6b0da6cb659c/latest_articles
或者
-
(void)awakeFromNib {
// iOS10 不加會{{0,0},{1000,1000}}
[self layoutIfNeeded];
}
awakeFromNib 不調用 (已經備份到簡書)
當建立控制器并勾選XIB的時候阻塑,當是控制器的時候蓝撇,不會走- (void)awakeFromNib方法,需要在- (void)viewDidLoad里面書寫相應的操作陈莽。只有當建立UIView的時候并勾選XIB的時候才會走- (void)awakeFromNib方法渤昌。切記切記。
Query 查詢
單元測試中:
XCTAssertEqual(a1, a2, format...)判斷相等(當a1和a2是 C語言標量走搁、結構體或聯合體時使用,實際測試發(fā)現NSString也可以)独柑;
只有當a1 a2不相等的時候才會生效
app更新后,沒有收到deviceToken
app 更新后私植, 自定義鈴音失效
非正式協議忌栅,即 NSObject 的分類
不要在 init 和 dealloc 中使用 self.property 的方式來訪問成員變量
高內聚,低耦合
accessor
英 ['?kses?r] 美 ['?kses?r]
n. [計] 存取器曲稼;訪問器
fast-forward ['fɑ:st'f?:w?d] Embedded Image
n. 快進功能
swift
輸入輸出參數 In-out Parameters
函數內部參數默認是常量索绪,不允許改變。
在函數參數的類型前加上inout 關鍵字 躯肌,此參數可以當做變量使用者春,不但可以改變內部參數同時更改了傳進來的實參
下面的代碼,不但intValueOne 的值變了清女,同時one的值也變了
從函數調用就能看出 swap(&one, &two) 這里傳入的是指針钱烟,聯想到c語言 指針作為函數參數,現在就很好理解了
func swapTwoInts(intValueOne: inout Int, intValueTwo: inout Int){
let temp : Int = intValueOne
intValueOne = intValueTwo
intValueTwo = temp
}
var one : Int = 100
var two : Int = 50
swap(&one, &two)
print("one = (one) two = (two)")
//one = 50 two = 100
方法中有block做參數
方法調用 把block的實現寫入,block中的參數是該方法內部傳入的拴袭,可以把它看做反向傳值读第,在這里嗎做我們希望的操作
擴展:我們可以在代理方法中加入block參數
[DXQR_Networking loginWithUserInfo:self.userManager complete:^(NSDictionary *returnObjector, DXNetworkingStatus status) {這里面可以做一些操作}]
方法實現:這里block作為傳進來的參數 直接給block傳值就成
-
(void)loginWithUserInfo:(DXQR_UserManager *)user
complete:(void (^)(NSDictionary *, DXNetworkingStatus))complete {complete(returnObject, DXNetworkingStatusSuccess);
}
讀懂奔潰日志 https://developer.apple.com/library/prerelease/content/technotes/tn2151/_index.html
程序奔潰之后,奔潰日志會存儲在手機上
低內存奔潰會有內存警告
低內存不需要符號化(Symbolicating)
Debug Symbol (dSYM) file
UUID含義是通用唯一識別碼
appStore 發(fā)給你的奔潰文件是未經過 符號化的(低內存不需要符號化(Symbolicating)) 你需要自己去符號化他
獲取手機上的奔潰信息:https://developer.apple.com/library/content/qa/qa1747/_index.html
通過TestFlight 出現的奔潰文件被上傳到appStore
Bitcode 是編譯程序的中間產物拥刻,方便appStore 根據bitcode把崩潰信息傳到開發(fā)者手中
未符號化的奔潰日志 中看不到方法名 里面只有16進制的地址
奔潰日志分為三種:
全部沒有符號化:文件中沒有一個方法名
部分符號化 :文件中有一部分方法名
全部符號化 :文件中全部是方法名
xcode 符號化奔潰日志的要求
1.本地必須要有 binary文件和dSYM文件
http://www.cocoachina.com/ios/20141219/10694.html
什么是 dSYM 文件
Xcode編譯項目后怜瞒,我們會看到一個同名的 dSYM 文件,dSYM 是保存 16 進制函數地址映射信息的中轉文件般哼,我們調試的 symbols 都會包含在這個文件中吴汪,并且每次編譯項目的時候都會生成一個新的 dSYM 文件,位于 /Users/<用戶名>/Library/Developer/Xcode/Archives 目錄下蒸眠,對于每一個發(fā)布版本我們都很有必要保存對應的 Archives 文件 ( AUTOMATICALLY SAVE THE DSYM FILES 這篇文章介紹了通過腳本每次編譯后都自動保存 dSYM 文件)漾橙。
dSYM 文件有什么作用
當我們軟件 release 模式打包或上線后,不會像我們在 Xcode 中那樣直觀的看到用崩潰的錯誤楞卡,這個時候我們就需要分析 crash report 文件了霜运,iOS 設備中會有日志文件保存我們每個應用出錯的函數內存地址,通過 Xcode 的 Organizer 可以將 iOS 設備中的 DeviceLog 導出成 crash 文件蒋腮,這個時候我們就可以通過出錯的函數地址去查詢 dSYM 文件中程序對應的函數名和文件名淘捡。大前提是我們需要有軟件版本對應的 dSYM 文件,這也是為什么我們很有必要保存每個發(fā)布版本的 Archives 文件了池摧。
如何將文件一一對應
每一個 xx.app 和 xx.app.dSYM 文件都有對應的 UUID焦除,crash 文件也有自己的 UUID,只要這三個文件的 UUID 一致险绘,我們就可以通過他們解析出正確的錯誤函數信息了踢京。
1.查看 xx.app 文件的 UUID,terminal 中輸入命令 :
dwarfdump --uuid xx.app/xx (xx代表你的項目名)
2.查看 xx.app.dSYM 文件的 UUID 宦棺,在 terminal 中輸入命令:
dwarfdump --uuid xx.app.dSYM
3.crash 文件內第一行 Incident Identifier 就是該 crash 文件的 UUID。
使用下面的命令黔帕,找到奔潰的方法名和類名
atos -arch armv7 -o APPNAME.app/APPNAME MEMORY_LOCATION_OF_CRASH
xcrun atos -arch arm64 -o /Users/achen/Desktop/crashAnalyze/111.app.dSYM/Contents/Resources/DWARF/來訪通 -l 0x100054000 0x1000a5f34
最后一個是地址代咸,倒數第二個是偏移
binary image 二進制映象
第三方crash 分析
騰訊的bugly 集成地址https://bugly.qq.com/iosfast
用戶主目錄,就是那個小房子圖標標識的目錄
有時候成黄,瀏覽器下載東西太慢老是下載失敗呐芥,可以考慮使用迅雷來下載
from email.MIMEText import MIMEText
from import : 從車里把礦泉水拿出來,給我
import : 把車給我
Python之reload函數
reload()函數將以前導入過的模塊再加載一次奋岁。重新加載(reload)包括最初導入模塊時應用的分析過程和初始化過程思瘟。這樣就允許在不退出解釋器的情況下重新加載已更改的Python模塊。
若干注意事項:
- 如果模塊在語法上是正確的闻伶,但在初始化過程中失敗滨攻,則導入過程不能正確地將模塊的名字綁定到符號表中。這時,必須在模塊能被重新加載之前使用import()函數加載該模塊光绕。
- 重新加載的模塊不刪除最初舊版本模塊在符號表中的登記項女嘲。
- 如果一模塊利用from。诞帐。欣尼。import。停蕉。愕鼓。方式從另一模塊導入對象,reload()函數不重新定義導入的對象慧起,可利用import菇晃。。完慧。形式避免這個問題谋旦。
- 提供類的重新加載模塊不影響所提供類的任何已存實例---已存實例將繼續(xù)使用原來的方法定義,只有該類的新實例使用新格式屈尼。這個原則對派生類同樣適用册着。
http://www.zg118.com:7998/push?key=V4.gps889.13725562702,a195ed82055a606848454cb9c7b5e3128754301cf804890b73ac404567400f29,gps889={"infoType":"1","from":"V4.myautogps.9e27078a372f9228d53b6dc3596548f1c4cbd9bb24ee1c6e37a515427d367fda","date":"2015-12-21T03:49:51","data":[{"info":"","title":"ACC報警","classify”:"3","macid":"Q15D1063","OffStr":”ACC報
警"}]}&svr=xyXinguangheng&tokenid=S6&isdb=1&msg=梁行你好&sound=warning.caf&userInfo={"type":1,"data":{"type":16,"id":"123"}}
HTTP超文本傳輸協議-HTTP/1.1中文版 http://javadocs.wikidot.com/hypertext-transfer-protocol-http1-1
[iOS翻譯]《iOS 7 Programming Pushing the Limits》系列:你可能不知道的Objective-C技巧 http://www.cnblogs.com/yangfaxian/p/3825336.html
《iOS 7 Programming Pushing the Limits》系列:你可能不知道的ObjC技巧 http://www.cocoachina.com/ios/20140709/9073.html
iOS項目自動化構建實踐(Jenkins+Pgyer+Email
http://www.reibang.com/p/32aa42f57bb3
mac ssh key 的獲取 http://blog.csdn.net/yhqbsand/article/details/22763411
終端命令 :ssh -v 查看ssh版本信息,如果系統(tǒng)安裝了ssh就會有版本信息打印脾歧,如果沒有打印則說明電腦中沒有安裝ssh
ssh-keygen 一路 enter 下去甲捏,沒有必要設置密碼
這個時候,會提示你Your identification has been saved in /Users/mac/.ssh/id_rsa.
Your public key has been saved in /Users/mac/.ssh/id_rsa.pub.
說明ssh key 已經生成鞭执,
如何打開id_rsa.pub 文件(因為我們的ssh key)存儲在這個文件中 https://www.zhihu.com/question/26071345
終端: cd /Users/mac/.ssh (id_rsa.pub 在.ssh文件夾中)
終端: more id_rsa.pub (即可打印ssh key)
或者 直接復制id_rsa.pub文件內的信息
終端:pbcopy < ~/.ssh/id_rsa.pub http://www.reibang.com/p/31cbbbc5f9fa/
id_rsa id_pub 公鑰與私鑰 http://blog.csdn.net/diyxiaoshitou/article/details/52471097
id_rsa 私鑰 id_rsa.pub公鑰
在oschina上添加SSH公鑰 http://blog.csdn.net/dlg1992/article/details/51290604
創(chuàng)建公鑰的目的: 使用SSH公鑰可以讓你在你的電腦和碼云通訊的時候使用安全連接(git的remote要使用SSH地址)1.打開終端進入.ssh目錄
cd ~/.ssh
如果.ssh文件夾不存在司顿,執(zhí)行指令自動創(chuàng)建
mkdir ~/.ssh
2.生成RSA密鑰對
ssh-keygen -t rsa -C "你的郵箱@xxx.com"
為了方便全程回車即可(不用輸入ras文件名及密碼)
3.查看公鑰內容
cat ~/.ssh/id_rsa.pub
4.將公鑰內容復制并粘貼(注意:公鑰內容以ssh-rsa開頭,你的郵箱結尾)
粘貼地址 http://git.oschina.net/profile/sshkeys
5.添加公鑰完成后進行測試公鑰
測試SSH鏈接
ssh -T git@git.oschina.net
當終端提示welcome to Git@OSC ... 表示鏈接成功
至此以后只要拷貝ssh鏈接地址兄纺,然后利用git指令即可進行相關操作大溜!
find中的鑰匙串文件:finder-菜單欄點擊前往-長按住option鍵選擇資源庫-在里面選擇keychain的文件夾
我們選擇login.keychain 文件(對應鑰匙串中的登錄選項,里面儲存了所有的開發(fā)證書相關)
QQ郵箱的POP3與SMTP服務器是什么 https://zhidao.baidu.com/question/368402993166895164.html
jenkins 卸載插件之后估脆,重啟下就可以了
iOS Provisioning Profile(Certificate)與Code Signing詳解 http://www.cnblogs.com/lrr0618/p/5388350.html
linux下echo命令詳解 http://www.cnblogs.com/perfy/archive/2012/07/24/2605903.html