description方法

1.description基本概念

  • NSLog(@"%@", objectA);這會自動調用objectA的description方法來輸出ObjectA的描述信息.

  • description方法默認返回對象的描述信息(默認實現是返回類名和對象的內存地址)

  • description方法是基類NSObject 所帶的方法,因為其默認實現是返回類名和對象的內存地址, 這樣的話,使用NSLog輸出OC對象,意義就不是很大,因為我們并不關心對象的內存地址,比較關心的是對象內部的一些成變量的值。因此,會經常重寫description方法,覆蓋description方法 的默認實現

2.description重寫的方法

  • 對象方法
/**對象方法:當使用NSLog輸出該類的實例對象的時候調用*/
-(NSString *) description
{return [NSString stringWithFormat:@"狗腿數:%d,狗眼數%d\n",_legNum,_eyeNum];
}
  • 類方法
/**類方法:當使用NSLog輸出該類的類對象的時候調用*/
+(NSString *) description
{return @"+開頭的description方法";
}

3.description陷阱

  • 千萬不要在description方法中同時使用%@和self,下面的寫法是錯誤的
- (NSString *)description {return [NSString stringWithFormat:@"%@", self];
}
  • 同時使用了%@和self,代表要調用self的description方法,因此最終會導致程序陷入死循環,循環調用description方法

  • 當[NSString stringWithFormat:@“%@”, self]; 使用它時,循環調用,導致系統會發生運行時錯誤。

  • 當該方法使用NSLog(“%@”,self) 時候, 系統做了相關的優化,循壞調用3次后就會自動退出

轉載于:https://www.cnblogs.com/xufengyuan/p/6554063.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/393503.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393503.shtml
英文地址,請注明出處:http://en.pswp.cn/news/393503.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode面試題 10.05. 稀疏數組搜索(二分法)

稀疏數組搜索。有個排好序的字符串數組,其中散布著一些空字符串,編寫一種方法,找出給定字符串的位置。 示例1: 輸入: words [“at”, “”, “”, “”, “ball”, “”, “”, “car”, “”, “”,“dad”, “”, “”], s “ta” 輸出…

laravel框架制作縮略圖和水印

1.首先需要使用 composer 在命令行安裝最新版本的 intervention/image : composer require intervention/image2.注冊服務提供者及別名(Laravel 版本 ≤ 5.4) 如果你的 laravel 版本小于或等于 5.4,安裝后需要注冊服務提供者和別…

mysql 模糊查詢 tp框架_TP框架中模糊查詢實現

TP框架中模糊查詢實現$where[g.name] array(like,%.$groupname.%);表達式查詢上面的查詢條件僅僅是一個簡單的相等判斷,可以使用查詢表達式支持更多的SQL查詢語法,查詢表達式的使用格式:$map[字段1] array(表達式,查詢條件1);$map[字段2] ar…

肉體之愛的解釋圣經_可以解釋的AI簡介,以及我們為什么需要它

肉體之愛的解釋圣經by Patrick Ferris帕特里克費里斯(Patrick Ferris) 可以解釋的AI簡介,以及我們為什么需要它 (An introduction to explainable AI, and why we need it) Neural networks (and all of their subtypes) are increasingly being used to build pro…

Python可變與不可變類型及垃圾回收機制

1. 可變與不可變類型 1.1 可變類型 在id不變的情況下,value可以改變,則稱之為可變類型。列表、字典與集合是可變的。 l1 [1,2,3,4,5] print(id(l1)) l1[1] 520 #改變列表元素 print(id(l1)) result: 1700748379208 …

12-1 12 防盜鏈 訪問控制 php解析 代理

2019獨角獸企業重金招聘Python工程師標準>>> 12.13 Nginx防盜鏈 12.14 Nginx訪問控制 12.15 Nginx解析php相關配置 12.16 Nginx代理 擴展 502問題匯總 http://ask.apelearn.com/question/9109location優先級 http://blog.lishiming.net/?p10012.13 Nginx防盜鏈 用來…

leetcode911. 在線選舉(二分法)

在選舉中,第 i 張票是在時間為 times[i] 時投給 persons[i] 的。 現在,我們想要實現下面的查詢函數: TopVotedCandidate.q(int t) 將返回在 t 時刻主導選舉的候選人的編號。 在 t 時刻投出的選票也將被計入我們的查詢之中。在平局的情況下&…

1-13句子逆序

題目描述 將一個英文語句以單詞為單位逆序排放。例如“I am a boy”,逆序排放后為“boy a am I”所有單詞之間用一個空格隔開,語句中除了英文字母外,不再包含其他字符 接口說明 /** * 反轉句子 * * param sentence 原句子 * return 反轉后的…

單例模式實現DB類

創建一個類 class DB_class {//public $name andy;//私有的屬性private static $db;//公共的靜態方法public static function index(){if (self::$db ! null ){return self::$db;}self::$dbnew DB_class();return self::$db;}//私有的構造方法private function __construct()…

終端定時任務 開始緩沖_如何開始使用終端以提高生產力

終端定時任務 開始緩沖by Luciano Strika通過盧西亞諾斯特里卡(Luciano Strika) 如何開始使用終端以提高生產力 (How to start using the terminal to be more productive) As developers, the terminal can be our second home.作為開發人員,碼頭可以成為我們的第…

圖片預覽------photoswipe 使用

photoswipe 使用 預覽圖片后,需要點擊關閉按鈕才能關閉,點擊圖片事件效果是放大圖片,和微信的效果不一致,最后改用微信預覽圖片的接口了,但是例子可以用,記錄一下!! http://www.cnbl…

SSKeychain

Keychain 使用? ---為了實用最大化我覺得我應該直接先說使用! 當然是使用第三方庫啦:sskeychain 3000星星的庫不開玩笑。github地址:https://github.com/soffes/sskeychain 導入完之后首先,編譯一下有無錯。 如果是自己手動導入&…

shell高級-----正則表達式

正則表達式概述 正則表達式是一種定義的規則,Linux工具可以用它來過濾文本。 基礎正則表達式 純文本 [rootnode1 ~]# echo "this is a cat" | sed -n /cat/p this is a cat [rootnode1 ~]# echo "this is a cat" | gawk /cat/{print $0} this …

leetcode130. 被圍繞的區域(bfs)

給定一個二維的矩陣,包含 ‘X’ 和 ‘O’(字母 O)。 找到所有被 ‘X’ 圍繞的區域,并將這些區域里所有的 ‘O’ 用 ‘X’ 填充。 示例: X X X X X O O X X X O X X O X X 運行你的函數后,矩陣變為: X X…

linux mysql提交_MySQL 事務提交過程

開發老大要求通過binlog查詢一條被修改的數據,數據被查出后問我,有沒有可能binlog中不會記錄,回答不會,因為數據被修改,若失敗直接回滾,不會在binlog中記錄,此刻一個朋友用了洪荒之力告訴我&…

spray.json_如何使用Spray-json(Un)在Akka HTTP中封送JSON

spray.jsonby Miguel Lopez由Miguel Lopez 如何使用Spray-json(Un)在Akka HTTP中封送JSON (How to (Un)marshal JSON in Akka HTTP with spray-json) In the previous post, we added JSON support to our Akka HTTP API using circe.在上一篇文章中 ,我們使用circ…

React單元測試:Jest + Enzyme(二)

前言 在上一篇教程中,我們成功搭建了基于Jest和Enzyme的單元測試框架并成功地跑起來第一個單元測試,可以點擊這里回顧一下。今天,我們重點討論如何通過Jest來mock數據。 什么是Mock Mock的簡單翻譯就是模擬。既可以模擬數據,也可以…

input file 文件上傳,js控制上傳文件的大小和格式

文件上傳一般是用jquery的uploadify,比較好用。后面會出文章介紹uploadify這個插件。 但是,有時候為了偷懶,直接就用input 的file進行文件和圖片等的上傳,input file 可以控制上傳的格式,但是是html5,很多瀏…

leetcode面試題 17.08. 馬戲團人塔(二分法)

有個馬戲團正在設計疊羅漢的表演節目,一個人要站在另一人的肩膀上。出于實際和美觀的考慮,在上面的人要比下面的人矮一點且輕一點。已知馬戲團每個人的身高和體重,請編寫代碼計算疊羅漢最多能疊幾個人。 示例: 輸入:…

如何選擇適合自己的CMS建站系統

如今做網站已不像過去那樣必須找網站公司才能建,因為網上針對建站的各種CMS建站系統層出不窮。像PageAdmin、DEDECMS、帝國CMS、Discuz等,這些CMS系統各有各的特點和優勢,小熊優化的小編我從事網站制作和網站優化多年,和很多建站朋…