原文:為什么在 Objective-C 中給 nil 發送消息程序不會崩潰?

我們知道在 Objective C 中給 nil 發送消息程序不會崩潰, Objective C 是以 C 語言為基礎的, PC 上,在 C 語言中對空指針進行操作, 程序會由於越界訪問而出現保護錯進而崩潰, 但是 Objective C 中為什么不會崩潰呢 原因需要從源代碼中尋找, 下面是 objc msgSend 的 arm 版匯編代碼片段: 在 arm 的函數調用過程中, 一般用 r r 傳 ...

2012-12-17 23:20 3 2105 推薦指數:

查看詳情

objective-C nil,Nil,NULL 和NSNull的小結

@import url(http://www.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css); @import url(/css/cuteeditor.css); nil:指向oc對象的空指針 Nil:指向oc類 ...

Thu Aug 30 01:48:00 CST 2012 1 5655
Objective-C 消息發送與轉發機制原理

轉載鏈接:Objective-C 消息發送與轉發機制原理 文章目錄 1. 八面玲瓏的 objc_msgSend 1.1. 源碼解析 1.2. 為什么使用匯編語言 2. 使用 lookUpImpOrForward ...

Fri Jun 28 02:04:00 CST 2019 0 1849
Objective-C的hasPrefix

Objective-C的hasPrefix hasPrefix:方法的功能是判斷創建的字符串內容是否以某個字符開始,其語法形式如下: -(BOOL)hasPrefix:(NSString*)aString; 運行結果如下: 2013-03-1918 ...

Fri Nov 29 20:00:00 CST 2013 0 11065
Objective-C消息傳遞機制

各種語言都有些傳遞函數的方法:C語言中可以使用函數指針,C++中有函數引用、仿函數和lambda,Objective-C里也有選擇器(selector)和block。不過由於iOS SDK的大部分API都是selector的方式,所以本文就重點講述selector了。Objective-C和我 ...

Fri Feb 17 02:19:00 CST 2012 0 3874
Objective-c防止數組越界而崩潰(全局效果)

數組越界其實是很基本的問題,但是解決起來除了count的判斷,還有每個調用的時候都要去判斷一遍 對於不明確的數據總會有崩潰的風險 然而 每次調用都判斷 那是太累了 so 。。runtime&category提供了一個比較簡潔的解決方案 首先把NSArray ...

Thu Nov 10 00:42:00 CST 2016 8 4245
Objective-C的alloc和init問題

從開始學的NSString *name=[[NSString alloc] init] 起,僅僅這句話是分配內存空間,一直在用,從來沒考慮過它的內部是怎么實現的。今天無意中看到了這一句代碼: ...

Wed Feb 17 07:25:00 CST 2016 1 2830
Objective-CNSArray的基本用法示例

NSArray的一些用法 NSArray只允許裝OC對象,並且不能裝空值,空代表數組元素的結束 使用block 塊遍歷整個數組 這個block 需要三個參數: id obj 表示數組的元素 NSUInteger idx 標示元素的下標 boolbool ...

Sat Dec 19 05:10:00 CST 2015 0 7945
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM