原创 unsigned,const,static,extern

一. unsigned和signed           1.存儲範圍不同,以16位計算機爲例:signed的存儲範圍是(-2^15 -- 2^15-1)即 -32768到 + 32767  的整數                    

原创 獲取某個 protocol 協議下的所有方法

- (NSArray<NSString *> *)appDelegateMethods {     static NSMutableArray *methods = nil;     static dispatch_once_t once

原创 常用GCD梳理(-)

一:異步、同步 1.dispatch_async(dispatch_queue_t queue, dispatch_block_t block); 異步執行 例如: 會立即返回,同時把block裏面加載的東西放在後臺執行。  執行完畢之後

原创 1.Git與版本控制簡介

尊重原創:原文鏈接地址:點擊打開鏈接 Intro 版本控制系統是什麼      版本控制系統(Version Control System,VCS)可以幫助我們記錄和跟蹤項目中各文件內容的修改變化。它可以幫我們保存項目的各個版本,以及

原创 dispatch_source_t

Dispatch Source是GCD中的一個基本類型,從字面意思可稱爲調度源,它的作用是當有一些特定的較底層的系統事件發生時,調度源會捕捉到這些事件,然後可以做其他的邏輯處理,調度源有多種類型,分別監聽對應類型的系統事件。我們來

原创 上傳appStore出現錯誤:90362,90535,4238

error itms 90362 ERROR ITMS-90362: "Invalid Info.plist value. The value for the key 'MinimumOSVersion' in bundle Who

原创 dispatch_soruce_t的簡單使用事例

__block int time = 3; //倒計時時間 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEF

原创 dispatch_once淺談

讓我們先看看dispatch_once的實現(Grand Central Dispatch是開源的,大家可以到git://git.macosforge.org/libdispatch.git克隆源碼) 1 2

原创 sublime Text3 安裝錯誤PyV8

1.  View->Show console ->根據官網 https://packagecontrol.io/installation 的提示,安裝package Control  2.Preferences ->package Con

原创 iOS 多線程總結

在這篇文章中,我將爲你整理一下 iOS 開發中幾種多線程方案,以及其使用方法和注意事項。當然也會給出幾種多線程的案例,在實際使用中感受它們的區別。還有一點需要說明的是,這篇文章將會使用 Swift 和 Objective-c 兩種語言講解

原创 Mac 終端基本命令

基本命令1、列出文件ls 參數 目錄名        例: 看看驅動目錄下有什麼:ls /System/Library/Extensions參數 -w 顯示中文,-l 詳細信息, -a 包括隱藏文件2、轉換目錄      cd    

原创 gitHub關聯本地

git --version 查看電腦git 版本。沒有的話,安裝git 因爲本地git倉庫和gitHub服務器是通過ssh加密,所以要在github.com上配置ssh-key -------> ssh -v   或   ssh --ve

原创 tableViewCell單擊和View衝突

_lowView 添加了單擊手勢 [self.view addSubview:_lowView];   UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]i

原创 UIView的xib關聯問題

使用xib新建了一個UIView,運行時的一個小錯誤: reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "BFMessageInfoView"

原创 button的圖片和文字的位置關係

UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(200, 200, 150, 60)]; btn.layer.borderWidth = 1; btn