相关疑难解决方法(0)

如何打印方法名称和行号并有条件地禁用NSLog?

我正在做一个关于在Xcode中调试的演示文稿,并希望获得有关使用NSLog的更多信息.

特别是,我有两个问题:

  • 有没有办法轻松NSLog当前方法的名称/行号?
  • 有没有办法在编译发布代码之前轻松"禁用"所有NSLog?

xcode cocoa cocoa-touch objective-c nslog

446
推荐指数
11
解决办法
14万
查看次数

打印出变量名称objective-C

继续上一个问题:Obj-C中的日志方法名称.我只是想知道是否有办法打印变量名称.例如:

NSString *name = "vodkhang";
NCLog(@"%@", name);
Run Code Online (Sandbox Code Playgroud)

我希望输出应该是:

name: vodkhang
Run Code Online (Sandbox Code Playgroud)

只是总结一下上一篇文章,目前我可以在打电话时打印出班级名称,方法名称和行号

NCLog(@"Hello World");
<ApplicationDelegate:applicationDidFinishLaunching:10>Hello world
Run Code Online (Sandbox Code Playgroud)

#define NCLog(s, ...) NSLog(@"<%@:%d> %@", __FUNCTION__, __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__])
Run Code Online (Sandbox Code Playgroud)

iphone debugging objective-c

15
推荐指数
1
解决办法
4675
查看次数

可可的最佳记录器

任何人都可以推荐我一个好的可可记录器,这应该与log4j相提并论.

我一直在用可可开发这个应用程序,随着源代码的增长,我发现自己渴望一个记录器.我已经google了一下,找到了一些选项,但我希望听到你们这些记录器的经验.

我期待着听到你的意见.

iphone logging cocoa objective-c ios

14
推荐指数
2
解决办法
5941
查看次数

如何在编译时获取方法名称?

如何在编译时获取封闭方法名称?

为什么我很难弄清楚这一点?为什么Java不希望我这样做?我没有看到像这样的功能存在任何固有问题,它对于记录方法名称而不重复方法签名和字符串常量非常有用,如下所示:

private void methodName() {
   final String MN = "methodName";
   ...
Run Code Online (Sandbox Code Playgroud)

有人可能会更改方法名称而不更改MN常量,然后我无法在日志中找到它.

我知道Java有一种(反射?)方法可以做到这一点,但是为什么有人想要过度复杂化并且使用运行时解决方案(针对这个特定问题)创建错误的可能性超出了我.

显然宏是不好的做法,但我认为这对他们来说是一个非常好的用例.这就是我基本上要做的事情,比如宏,常数.

顺便说一下,这个问题很相似:

获取当前执行方法的名称

但是,没有一个解决方案是在编译时派生的常量.它们都是运行时计算.


编辑:为什么不能在编译时完成?

请不要给出一个简单的答案,比如"这就是Java的设计方式",因为那时我只会问"为什么?"

java reflection macros compile-time

8
推荐指数
1
解决办法
1787
查看次数