DLog 1.0.3

DLog 1.0.3

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布最后发布2014年12月

Gaurav Khanna维护。



DLog 1.0.3

以光速进行调试和日志记录。请不要再在调试器中编写类型转换。只需在调试器中简单地写入[DLog CGRectGet:myRect],或在代码中写入DLogCGRect(myRect),所有内容都将自动完成!

目的

DLog只是C函数或objc方法执行的类方法集合。在调试会话中,快速编写po (NSString*)NSStringFromCGRect(myRect)很快就会变得令人烦琐。DLog通过类方法集合解决了这个问题。我发现自己在项目早期阶段会经常使用这个文件。只需编写几个键,例如'D' TAB 'O' TAB,'DLogObject'就会自动完成,真是令人愉快。

设置

#import <DLog/DLog.h>

提示:将其导入Prefix.pch中,以包括整个项目。

在代码中的使用

DLogObject(myObject);
DLogNSObject(myObject); // => DL:myObject;hello, world!;


DLogFunctionLine(); // => DL:-[TableViewController viewDidLoad]:15


DLogBOOL(myValue); // => DL:myValue;YES;


DLogSEL(mySelector); // => DL:mySelector;buttonAction:;


DLogCGFloat(myCGFloat);
DLogunichar(myUnichar);
DLogUIColor(myColor);


DLogMainThread() // => DL:-[TableViewController viewDidLoad];15:MainThread=YES;


DLogTimeStart(1);
DLogTimeEnd(1); // => DL:1;4123;
...

在调试器中的使用

po [DLog Selector:mySelector] // => viewDidAppear:

po [DLog CGRect:myRect] // => {0, 0, 320, 80}

po [DLog UIGestureRecognizerState:myState] // => UIGestureRecognizerStateBegan

po [DLog cTypeEncoding:myObject] // => id
po [DLog cTypeEncoding:myInt] // => int
po [DLog cTypeEncoding:&myInt] // => int*
po [DLog cTypeEncoding:myCGFloat] // => (32bit) float, (64bit) double
...

简单

把UIImage从调试器保存到文件中

po [DLog base64EncodedStringWithUIImage:myImage];

提示:将字符串复制粘贴到在线base64图片解码器中。

递归打印UIView层次结构

po [DLog UIView:myView];

打印大多数UIKit值

po [DLog UIOffset:myOffset];
po [DLog UIEdgeInsets:myInsets];

高级使用

DLog为您提供快速访问静态类型系统和objc运行时。

DLogBytes(myPointer);
DLogByteOrder(); // => LittleEndian
DLogTypeEncoding(myValue); // => unsigned long long

// print exception reason
DLogException(myException);

// print stack trace
DLogException([[NSException new] raise]);

你看到了什么模式?DLog允许以多种方式做事,没有正确的方式,只有最快的方式。

DLogfloat(myFloat);

DLogid(myObject);
DLogObject(myObject);
DLogNSObject(myObject);

DLogNSInteger(myNSInteger);

DLogNSUInteger(myNSUInteger);

DLoglong(myLong);
DLogunsignedlong(myUnsignedLong);
DLoglonglong(myLongLong); 
...

还包含了方便的方法,即使它们可以快速手动编写,因为设置#define DEBUG 0和一次移除所有日志语句要容易得多。断言方法以DAssert开头。

DAssertMainThread();
DAssertNil();
DAssertNonNil();

私有方法

DLogUIView[DLog performLowMemoryWarning]在运行时调用私有方法。没有编译器错误,因为选择器是动态评估的,并且函数是手动查找的(参见源代码)。由于这个原因,不建议将DLog包含在任何App Store的公共版本中。

配置

DLog不打算用于生产,它会自动删除,并在发布时用do{}while(0)语句替换,这些语句会得到优化。如果您希望在生产中使用DLog,请简单地设置#define DLOG 1

#define DEBUG 0
#define DLOG 1

DLogObject(myDate); // => NSLog(@"%s:%s:%@", 'DL', 'myDate', myDate);

DLog日志方法包括一个前缀(默认为'DL'),但可以配置。

#define DLOG_PREFIX MYPREFIX

贡献指南

  • 如果您发现了一个错误,请打开一个问题报告。
  • 如果您有功能请求,请打开一个问题报告。
  • 如果您想要贡献力量,请按照以下步骤提交 pull 请求。

  1. 分支创建
  2. 使用 "username-myfeature" 创建一个新分支。
  3. 例如:gauravk92-adding-more-encodings-to-cTypeEncoding-method
  4. 例如:gauravk92-fix-bug-on-osx-nsrange-method
  5. 例如:gauravk92-add-JSValue-to-json-log-method
  6. 提交并提交 pull 请求

联系方式

关注 Gaurav Khanna 在 Twitter (@gauravk92)

许可协议

DLog 在 MIT 许可协议下提供。更多信息请参阅 LICENSE 文件。