iOS description方法的使用介紹

2021-07-24 22:56:30 字數 1031 閱讀 7264

在輸出字串、一些基本資料型別以及 oc 物件,我們都可以使用 nslog 函式進行輸出。本次主要談談使用nslog輸出 oc 物件的應用。

一般情況下,我們在使用nslog 和 %@ 輸出某個物件時,就會呼叫這個物件的 description 方法,它的返回值就是 nsstring 字串型別,所以 description 預設實現返回的格式是 《類名: 物件的記憶體位址》,如圖:

以上輸出實現的具體步驟為:

1.呼叫物件p的-description方法

2.拿到-description方法的返回值(nsstring*)顯示到螢幕上

3.-description方法預設返回的是「類名+記憶體位址」

那麼,既然description方法的預設實現是返回類名和物件的記憶體位址,所以在必要情況下,我們需要重寫description方法以達到改變輸出結果目的,覆蓋description方法的預設實現,比如重寫上述** person 類的 description方法,返回_age和_name成員變數的值:

重寫完description方法後,再呼叫nslog(@」%@」,p)時輸出結果不再是《類名: 記憶體位址》,而是返回的字串:

另外乙個重點:千萬不要在 description 方法中同時使用 %@ 和 self,如果這樣使用了,那麼最終會造成程式死迴圈,原因是因為:如果使用了%@和self,代表要呼叫self的description方法,最終就是迴圈呼叫description方法,所以以下是錯誤的寫法,不可取:

關於springCloud中服務方呼叫方的配置

1.我方是服務方,別人呼叫我方,由我方提供位址,不需要呼叫feign。那麼,位址資訊在resourceconfig裡面做配置,resourceconfig中配置的位址相當於是把請求位址暴露給對方,並在此位址請求時對他放行。configuration enableresourceserver publ...

Container DataItem幾種方式

在繫結資料時經常會用到這個句程式 databinder.eval container.dataitem,x 或者 databinder.eval container,dataitem.x 今天又學到一種,而且微軟也說這種方法的效率要比以上兩種高。datarowview container.datai...

Linux Carmer driver註冊方法

最近又開始看carmer的驅動了,在linux下通常實用video4linux框架來實現video capture camera capture等功能,先說一下裝置註冊部分,ov7670.c中,註冊方法如下 static struct v4l2 i2c driver data v4l2 i2c da...