标签: nslog

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

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

特别是,我有两个问题:

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

xcode cocoa cocoa-touch objective-c nslog

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

什么是"toString()"的Objective-C等价物,与NSLog一起使用?

是否有一种方法可以在我的自定义类中覆盖,以便何时

      NSLog(@"%@", myObject) 
Run Code Online (Sandbox Code Playgroud)

被称为,它将打印我的对象的字段(或任何我认为重要的)?我想我正在寻找Java的Objective-C等价物toString().

objective-c tostring nslog

167
推荐指数
4
解决办法
5万
查看次数

是否应该在生产代码上使用NSLog()?

我在这个网站上被告知了几次,但我想确保确实如此.

我希望能够在我的代码中撒上NSLog函数调用,并且Xcode/gcc会在构建我的Release/Distribution版本时自动删除这些调用.

我应该避免使用它吗?如果是这样,有经验的Objective-C程序员之间最常见的选择是什么?

iphone objective-c nslog

154
推荐指数
6
解决办法
3万
查看次数

NSInteger的NSLog/printf说明符?

A NSInteger在32位平台上为32位,在64位平台上为64位.是否有一个NSLog总是匹配大小的说明符NSInteger

建立

  • Xcode 3.2.5
  • llvm 1.6编译器(这很重要; gcc不这样做)
  • GCC_WARN_TYPECHECK_CALLS_TO_PRINTF 打开

这让我有些悲伤:

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {
        NSInteger i = 0;
        NSLog(@"%d", i);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

对于32位代码,我需要说明%d符.但是,如果我使用说明%d符,我在编译64位时会收到警告,建议我使用%ld.

如果我使用%ld匹配64位大小,编译32位代码时,我会收到警告,建议我使用%d.

如何一次修复这两个警告?是否有我可以使用的说明符?

这也影响[NSString stringWithFormat:][[NSString alloc] initWithFormat:].

cocoa objective-c nslog nsinteger 32bit-64bit

126
推荐指数
1
解决办法
7万
查看次数

在发布应用程序之前是否需要禁用NSLog?

在为iPhone发布应用程序时,如果我禁用NSLog();它会表现更好吗?

iphone nslog ios

116
推荐指数
8
解决办法
5万
查看次数

NSLog在重写描述方法中的对象的内存地址

我正在覆盖对象的描述方法.我需要知道如何打印对象的内存地址来替换下面代码中的{???}:

-(NSString *) description {
    return [NSString stringWithFormat:@"<SomeClass: %@>\nparmeterOne: %@\nparameterTwo: %@",
            {???}, self.parameterOne, self.paramterTwo];
}
Run Code Online (Sandbox Code Playgroud)

我希望它在控制台中打印如下:

<SomeClass: 0x4c05600> parameterOne: 12 parameterTwo: sausages
Run Code Online (Sandbox Code Playgroud)

objective-c nslog

115
推荐指数
2
解决办法
4万
查看次数

警告:"格式不是字符串文字,没有格式参数"

自升级到最新的Xcode 3.2.1和Snow Leopard以来,我一直在收到警告

"格式不是字符串文字,没有格式参数"

来自以下代码:

NSError *error = nil;

if (![self.managedObjectContext save:&error]) 
{
    NSLog([NSString stringWithFormat:@"%@ %@, %@", 
       errorMsgFormat, 
       error, 
       [error userInfo]]);      

}
Run Code Online (Sandbox Code Playgroud)

如果errorMsgFormatNSString格式说明符(例如"print me like this: %@":),上面的NSLog调用有什么问题?什么是修复它的建议方法,以便不生成警告?

warnings objective-c string-formatting nslog

109
推荐指数
6
解决办法
8万
查看次数

带有CGPoint数据的NSLog

我有一个CGPoint称为点被分配触摸:

UITouch *touch = [touches anyObject];

CGPoint point = [touch locationInView:self];
Run Code Online (Sandbox Code Playgroud)

我想将x坐标值放入我的控制台日志中:

NSLog(@"x: %s", point.x);
Run Code Online (Sandbox Code Playgroud)

当我使用它时,日志输出为:

x :( null)

我已经验证,使用调试器和变量监视调用此点时,该值不为null.

任何帮助,赞赏,

谢谢 // :)

iphone cocoa cocoa-touch core-graphics nslog

92
推荐指数
3
解决办法
4万
查看次数

iOS 10不打印NSLog

NSLogXcode 8.0 beta(8S128d)上没有打印任何内容.printf没有改变

这是我的代码:

NSLog(@"hello from NSLog");
printf("hello from printf");
Run Code Online (Sandbox Code Playgroud)

这是iOS 9模拟器上的输出:

2016-06-17 09:49:10.887 calmapp-dev[28517:567025] hello from NSLog
hello from printf
Run Code Online (Sandbox Code Playgroud)

这是iOS 10 Simulator上的输出:

hello from printf
Run Code Online (Sandbox Code Playgroud)

xcode nslog ios ios10 xcode8

88
推荐指数
7
解决办法
5万
查看次数

如何在NSString中使用printf

我需要使用类似NSLog但没有时间戳和换行符的东西,所以我正在使用printf.我怎么用这个NSString

printf cocoa-touch objective-c nslog nsstring

59
推荐指数
1
解决办法
4万
查看次数