工程裡面NSLog的處理方法

2021-07-13 06:43:25 字數 1024 閱讀 8889

簡單介紹以下幾個巨集:

1) __va_args__ 是乙個可變引數的巨集,這個可變引數的巨集是新的c99規範中新增的,目前似乎只有gcc支援(vc6.0的編譯器不支援)。巨集前面加上##的作用在於,當可變引數的個數為0時,這裡的##起到把前面多餘的","去掉,否則會編譯出錯。

2) __file__ 巨集在預編譯時會替換成當前的源檔名

3) __line__巨集在預編譯時會替換成當前的行號

4) __function__巨集在預編譯時會替換成當前的函式名稱

1. 在***-prefix.pch裡面新增, 重新定義系統的nslog,__optimize__ 是release 缺省會加的巨集

#ifndef __optimize__

#define nslog(...) nslog(__va_args__)

#else

#define nslog(...){}

#endif

2.在***-prefix.pch裡面新增 ,直接自己寫#define,當release版本的時候把#define 注釋掉即可

#define ios_debug

#ifdef ios_debug

#define nslog(...) nslog(__va_args__)

#endif

3.在***-prefix.pch裡面新增

#ifdef debug

# define dlog(format, ...) nslog((@"[檔名:%s]" "[函式名:%s]" "[行號:%d]" format), __file__, __function__, __line__, ##__va_args__);

#else

# define dlog(...);

#endif

這種方式需要修改專案的配置,使得在debug編譯的時候,編譯dlog的巨集,產生詳細的日誌資訊,而release的時候,不產生任何控制台輸出

相比而言,還是第一種比較方便

NSLog列印各種型別資料的方法

id d,d,i long u,u unsigned long hi short hu unsigned short qi long long qu unsigned long long x,x 16進製制列印unsigned long o,o 8進製列印unsigned long f,e,e,g,...

vue裡面引入jq的方法

1 因為已經安裝了vue腳手架,所以需要在webpack中全域性引入jquery 開啟package.json檔案,在裡面加入這行 jquery後面的是版本,根據你自己需求更改。dependencies 然後在命令列中cnpm install 大多人應該都是使用的 映象,所以使用cnpm,如果你不是...

坑 OC裡面寫的屬性和方法在swift裡面無法訪問

背景 專案裡面oc寫的檔案有個block屬性要在swift裡面訪問,但是在swift裡面怎麼都無法訪問到屬性,然後把block屬性加到oc的方法引數裡面,連方法也不能訪問了.思考 第一直覺猜的是swift不支援oc的block了,但是仔細一想沒有道理,就新建了乙個專案,居然可以訪問block屬性和方...