原创 iOS 輪播圖 YJBannerView 的使用方法詳解

源碼: YJBannerView Github源碼地址 YJBannerView 使用簡單、功能豐富的 Objective-C版 輪播控件, 基於 UICollectionView 實現, 多種場景均支持使

原创 iOS 將UIView控件轉換成UIImage對象

源碼地址:前去查看鏈接 /** 將 UIView 轉換成 UIImage @param view 將要轉換的View @return 新生成的 UIImage 對象 */ - (UIImage *)yj_convertC

原创 iOS開發 解決WKWebView加載的h5,無法調用撥打電話功能

H5的撥打電話代碼: <a href="tel:13112345678">移動WEB頁面JS一鍵撥打號碼諮詢功能</a> UIWebView加載的h5,可以調用;但是WKWebView就是不行,找了半天,最後解決,在WKWeb

原创 runtime如何實現weak變量的自動置nil?

runtime 對註冊的類, 會進行佈局,對於 weak 對象會放入一個 hash 表中。 用 weak 指向的對象內存地址作爲 key,當此對象的引用計數爲0的時候會 dealloc, 在這個 weak 表中搜索,找到所有以a爲鍵的

原创 教你深刻理解Runtime機制

教你深刻理解Runtime機制 什麼是Runtime? 概念 Objective-C是基於C語言加入面向對象特性和消息轉發機制的動態語言,這就是說它不僅需要一個編譯器,還需要Runtime系統動態的創建類和對象,進行消息發送和轉發。關於R

原创 Python pip install requests產生的錯誤

錯誤 Exception: Traceback (most recent call last): File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/ba

原创 objc在向一個對象發送消息時,發生了什麼?

objc在向一個對象發送消息時,runtime庫會根據對象的isa指針找到該對象實際所屬的類,然後在該類中的方法列表以及其父類方法列表中尋找方法運行,然後在發送消息的時候,objc_msgSend方法不會返回值,所謂的返回內容都是具體調用

原创 android基本架構

Android其本質就是在標準的Linux系統上增加了Java虛擬機Dalvik,並在Dalvik虛擬機上搭建了一個JAVA的application framework,所有的應用程序都是基於JAVA的application framew

原创 能否想編譯後的類中添加實例變量,能否像運行時創建的類添加實例變量?

1.不能向編譯後得到的類增加實例變量 2.能向運行時創建的類中添加實例變量 原因: a.編譯後的類已經註冊在runtime中,類結構體中的objc_ivar_list實例變量的鏈表和instance_size實例變量的內存大小已經確

原创 iOS多線程—線程間的通信

介紹 線程間通信:在1個進程中,線程往往不是孤立存在的,多個線程之間需要經常進行通信 線程間通信的體現 1個線程傳遞數據給另1個線程 在1個線程中執行完特定任務後,轉到另1個線程繼續執行任務 線程間通信常用方法 (void)perfor

原创 Mac 上如何正確的安裝Python2.7和Python3

一、Python 介紹 Python介紹 Python3在2008年12月3日正式發佈, 但是有很多library還是使用Python2.7,所以需要在Mac裏面同時裝這兩個版本,並且和系統所使用的Python區分開來呢?今天要寫的是如何

原创 3種類型的block

根據isa指針,block一共有3種類型的block _NSConcreteGlobalBlock 全局靜態 _NSConcreteStackBlock 保存在棧中,出函數作用域就銷燬 _NSConcreteMallocBlock 保存在

原创 iOS橫向滾動的scrollView和系統pop手勢返回衝突的解決辦法

原理: scrollView的pan手勢會讓系統的pan手勢失效,所以我們只需要在系統手勢失效且scrollView的位置在初始位置的時候讓兩個手勢同時啓用就可以了 1.首先自定義一個scrollView,比如:CustomScrollV

原创 爲什麼說Objective-C是一門動態的語言?

什麼叫動態靜態 靜態、動態是相對的,這裏動態語言指的是不需要在編譯時確定所有的東西,在運行時還可以動態的添加變量、方法和類 Objective-C 可以通過Runtime 這個運行時機制,在運行時動態的添加變量、方法、類等,所以說Obje

原创 git小技巧:git blame && git show 查看某一行代碼的修改歷史

先查看某行代碼由誰寫的,在哪個commit中提交的: git blame file_name 其顯示格式爲: commit ID | 代碼提交作者 | 提交時間 | 代碼位於文件中的行數 | 實際代碼 類似於下面這樣: 從而獲得c