ios nslog 例子_iOS開發-使用宏自定義輸出(NSLog)

前言:

1)輸出日志是會大量損耗系統性能

2)輸出的信息很容易會被截取到,導致信息不安全。

所以我們會在發行版(Release)取消所有的Log。如果一行一行地去注釋掉Log,顯然不是一個明確的選擇。

因此我們可以使用宏去自定義Log輸出。

最簡單的一個例子

#ifdefDEBUG#define GCLog(fmt, ...) NSLog((fmt), ##__VA_ARGS__);

#else

#define GCLog(...);

輸出當前方法名

#define GCMethod(...) NSLog(@"%s", __func__);

使用方法

GCLog(@"sdf");

使用宏自定義輸出,還可以很方便地管理輸出的內容

#ifdef DEBUG

# define DLog(fmt, ...) NSLog((@"[文件名:%s]\n" "[函數名:%s]\n" "[行號:%d] \n"fmt), __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);#else # define DLog(...);#endif

摘自:http://blog.csdn.net/remote_roamer/article/details/7107320

參數解釋

1) __VA_ARGS__ 是一個可變參數的宏,很少人知道這個宏,這個可變參數的宏是新的C99規范中新增的,目前似乎只有gcc支持(VC6.0的編譯器不支持)。宏前面加上##的作用在于,當可變參數的個數為0時,這里的##起到把前面多余的","去掉的作用,否則會編譯出錯, 你可以試試。2) __FILE__ 宏在預編譯時會替換成當前的源文件名3) __LINE__宏在預編譯時會替換成當前的行號4) __FUNCTION__宏在預編譯時會替換成當前的函數名稱

有了以上這幾個宏,特別是有了__VA_ARGS__ ,調試信息的輸出就變得靈活多了。

摘自:http://blog.chinaunix.net/uid-22878837-id-2110544.html

博文作者:GarveyCalvin

本文版權歸作者和博客園共有,歡迎轉載,但須保留此段聲明,并給出原文鏈接,謝謝合作!

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

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

相關文章

python小技巧積累--題庫(持續更新)

介紹 作為一名程序員,除了需要具備解決問題的思路以外,代碼的質量和簡潔性也很關鍵。 python內置庫中就有很多簡潔而又優雅的操作,這里的知識都來源于網絡積累, 閑暇時整理下來方便溫故。目錄 >選擇正確的內置功能 使用enum…

提高SQL執行性能方案:如何讓你的SQL運行得更快

---- 人們在使用SQL時往往會陷入一個誤區,即太關注于所得的結果是否正確,而忽略了不同的實現方法之間可能存在的性能差異,這種性能差異在大型的或是復雜的數據庫環境中(如聯機事務處理OLTP或決策支持系統DSS)中表現得尤…

休眠后gpio狀態_STM32中GPIO的8種工作模式總結

STM32中GPIO的8種工作模式總結一、推挽輸出:可以輸出高、低電平,連接數字器件;推挽結構一般是指兩個三極管分別受兩個互補信號的控制,總是在一個三極管導通的時候另一個截止。高低電平由IC的電源決定。形象點解釋:推挽&#xff0c…

Ubuntu16.04 下 tensorRT安裝

環境準備 主要是根據工程環境需要,參考trt文檔安裝trt 1.查看trt適配情況 :鏈接跳轉,注意,不同版本的trt有不同版本的文檔,請以最新文檔為準。 2.根據自己系統情況下載相關包 因為我自己拉的docker鏡像是ubuntu16.04…

左右xcode的重構選項的一些理解

Rename(重命名):對標示符進行重命名,以獲得更好的代碼可讀性,這些標示符包含類,方法或者函數的名稱. Extract(抽取):將你在XCode種選擇的代碼抽取到一個新的方法或函數中. Create SuperClass(創建父類):為Xcode中當前所選的類定義父類 Move Up(上移):將所選擇的方法,屬性,或實例…

window 如何查看tomcat 實時日志_如何處理生產環境Tomcat的catalina.out日志?

前語:不要為了讀文章而讀文章,一定要帶著問題來讀文章,勤思考。作者:jmcui 來源:http://1t.click/x4q# 前言隨著每天業務的增長,Tomcat 的catalina.out日志 變得越來越大,占用磁盤空間不說。要…

zabbix的agent端的主動模式關鍵三個參數

如多主機超過300和隊列內容過多,就采用主動模式. [rootweb03 zabbix]# egrep -v "^#|^$" zabbix_agentd.conf PidFile/var/run/zabbix/zabbix_agentd.pid LogFile/var/log/zabbix/zabbix_agentd.log LogFileSize0 StartAgents0 ServerActive172.16.1.8 Hostnameweb03…

opencv 繪制坐標曲線_OpenCV手工實現灰度及RGB直方圖

#include #include#include#include#include#include#include#include#includeusing namespacecv;using namespacestd;//單通道圖片直方圖繪制void drawHist(vectornums){Mat hist Mat::zeros(600, 800, CV_8UC3);auto Max max_element(nums.begin(), nums.end());//max迭代器類…

onnx 測試_用于ONNX的TensorRT后端

用于ONNX的TensorRT后端解析ONNX模型以使用TensorRT執行。另請參閱TensorRT文檔。有關最近更改的列表,請參見changelog。支持的TensorRT版本Master分支上的開發適用于具有完整維度和動態架構shape支持的TensorRT 7.2.1的最新版本。對于TensorRT的早期版本&#xff0…

paddlepaddle測試安裝_百度paddlepaddle深度學習7日入門-CV疫情特輯心得

正值疫情嚴重之日,作為一名研究生被迫待在家里學習,手頭的科研項目也嚴重受挫。。。偶然間,看到微信公眾號發布這門課,馬上報名,入坑!!!瞬間疫情其間有學習的目標了。。該課程學習依…

apache目錄 vscode_VsCode搭建Java開發環境(Spring Boot項目創建、運行、調試)

VsCode搭建Java開發環境(Spring Boot項目創建、運行、調試)安裝如下兩個主要擴展即可,這兩個擴展已關聯java項目開發主要使用的maven、springboot等所需要的擴展。開始步驟:在 Visual Studio Code 中打開擴展視圖(CtrlShiftX)。輸入“java”搜索商店擴展…

android dp轉px的公式_Android特效專輯——自定義不一樣的Toast

大家都知道,Android的控件有時候很難滿足我們的需求,所以我們需要自定義View。自定義的方式很多,有繼承原生控件也有直接自定義View的,今天寫的是自定義的Toast,當然,這個不是復寫Toast,是換一種表達形式&a…

code iban 是有什么組成_深入淺出Zookeeper(四):客戶端的請求在服務器中經歷了什么...

作者 泊浮目 沃趣科技高級研發工程師出品 沃趣科技1. 前言當我們向zk發出一個數據更新請求時,這個請求的處理流程是什么樣的?zk又是使用了什么共識算法來保證一致性呢?帶著這些問題,我們進入今天的正文。2. 設計模式&#xff1…

Centos7: 配置IO調度

今天有同事問我個問題:“CentOS7如何修改IO默認的調度”,我這里簡單整理下如何調整的方法: 1、查看CentOS7下IO支持的調度 1234[rootkvm02 ~]# dmesg | grep -i scheduler [ 16.900459] io scheduler noop registered[ 16.900473] io sch…

啟動activemq_「Java」 - SpringBoot amp; ActiveMQ

一、消息隊列消息隊列中間件是分布式系統中重要的組件,主要解決應用耦合、異步消息、流量削鋒等問題,實現高性能、高可用、可伸縮和最終一致性架構,是大型分布式系統不可缺少的中間件。目前在生產環境中使用較多的消息隊列有ActiveMQ、Rabbit…

永不休眠怎么設置_電腦休眠后應該怎樣喚醒?

可能有朋友會碰到這種情況,電腦屏幕顯示正在休眠,而且不停的轉圈,這是怎么回事,如何喚醒?下面讓堅哥為大家分析一下吧。電腦開機顯示休眠一般根據以下幾種情況進行處理:1、正常電腦休眠:一般的是按一下電源…

配置ssl證書_Mysql配置ssl證書

本環境基于mysql5.6配置,通過openssl生成證書進行配置一、確認環境信息1、查看數據庫版本mysql> select version();-----------| version() |-----------| 5.6.36 |-----------2、查看數據庫是否支持ssl配置mysql> show variables like have%ssl%;-----------…

echarts散點圖中大小_echarts在地圖上繪制散點圖(任意點)

項目需求:在省份地圖上繪制散點圖,散點位置不一定是哪個城市或哪個區縣,即任意點通過查詢官網文檔,找到一個與需求類似的demo:,更改代碼,將中國地圖替換為省份地圖,省份地圖的js代碼…

如何讓圖片充滿excel單元格_如何在Excel單元格建立下拉菜單

對于一些常用的數據我們往往會希望能夠盡量快速的輸入,下拉菜單就是一個最簡單的解決辦法。那么如何實現下拉菜單呢?跟隨以下步驟,建立屬于自己的下拉菜單吧!如何建立下拉菜單?一、確定內容:在單元格中&…

pgsql中float4導致java程序精度丟失_Java基礎系列02

注釋Java中支持三種注釋:1.單行注釋以//開始換行結束。2.多行注釋以/*開始,以*/結束。3.說明注釋以/**開始,以*/結束。關鍵字關鍵字:是指在程序中,Java已經定義好的單詞,具有特殊含義。例如上篇文章中Hello…