我有一个像这样定义的字符串常量:
#define kMyString @"This is my string text!";
Run Code Online (Sandbox Code Playgroud)
代码中的某处我想用NSLog打印出这段代码:
NSLog(@"This is it: %@",kMyString);
Run Code Online (Sandbox Code Playgroud)
但是得到一个构建错误:Expected expression.
我已经看过Apple的格式说明符,但无法弄明白.
有人可以向我解释如何做到这一点?
谢谢!
谁能告诉我NSLog和之间有什么区别DLog?
当我查看这个项目代码时,我发现了这个DLog:http://code.google.com/p/iphone-socks-proxy/
我想知道Objective-C中NSLog的Printf语句和语句之间的区别(用于应用程序......!)
为什么所有开发人员都使用NSLog而不是Printf?
两者看起来相似,但内部工作有什么不同?
他们可以在哪个方面加以区分?
假设我的范围被创建为
NSRange myRange = {0,100};
Run Code Online (Sandbox Code Playgroud)
如何myRange在NSLog中打印?以下不起作用
NSLog(@"my range is %@",myRange);
Run Code Online (Sandbox Code Playgroud) 我正在关注Apple的创建Safari App Extension的指南.简而言之,我:
扩展程序的工具栏按钮出现在Safari中.Apple的指南说当我点击工具栏按钮时我应该在控制台中看到NSLog消息,但我什么都没看到.
我已经编辑了SafariExtensionHandler.swift来向扩展注入的脚本发送消息:
override func toolbarItemClicked(in window: SFSafariWindow) {
// This method will be called when your toolbar item is clicked.
NSLog("The extension's toolbar item was clicked")
window.getActiveTab(completionHandler: { (activeTab) in
activeTab?.getActivePage(completionHandler: { (activePage) in
activePage?.dispatchMessageToScript(withName: "toolbarItemClicked", userInfo: nil)
})
})
}
Run Code Online (Sandbox Code Playgroud)
我编辑了注入的脚本(script.js)来警告该消息:
safari.self.addEventListener("message", function (event) {
alert("We got a message from the extension! - " + event.name + ": " + event.message);
});
Run Code Online (Sandbox Code Playgroud)
单击工具栏按钮时出现警报(当我在webkit.org上的页面上时,因为我已经离开了默认的SFSafariWebsiteAccess设置),因此扩展程序正在工作并注册了点击.但我没有在Xcode的控制台或Console应用程序中看到NSLog.
我是一个真正的Xcode新手,所以我确定我错过了一些明显的东西 …
将日志语句写入iPhone应用程序中的文件或数据库的最佳方法是什么?
理想情况下,NSLog()输出可以使用freopen()重定向到文件,但我看到几个报告它不起作用.有没有人已经这样做或有任何想法如何最好地做到这一点?
谢谢!
我想在NSLog中覆盖自定义对象的默认打印功能;
例如:
MyObject *myObject = [[MyObject alloc] init];
NSLog(@"This is my object: %@", myObjcet);
Run Code Online (Sandbox Code Playgroud)
将打印出来:
This is my object: <MyObject: 0x4324234>
Run Code Online (Sandbox Code Playgroud)
我在MyObject中覆盖了一个函数来打印出更漂亮的描述吗?
干杯! 缺口.
我只是想知道是否有一种快速简便的方法可以将所有属性的各种值打印到日志中以进行调试.就像我想知道所有BOOL,浮点数等的值是什么.
升级到Xcode 8 GM后,我注意到NSLog没有将整个日志消息打印到控制台.当针对下载大量信息的API工作时尤其明显,例如REST API从数据库下载所有产品,它只显示第一个产品的前30个键,其余信息被剪切...
我打印数组和字典,如果这有任何区别.
NSDictionary *allProducts = responseFromAPI;
NSLog(@"All products:%@", allProducts);
Run Code Online (Sandbox Code Playgroud)
有没有人注意到这个?有人知道如何解决这个问题吗?
我在OS X上运行了cocoa应用程序.我已经使用NSLog进行调试.现在我想将日志语句重定向到文件而不是控制台.
我已经使用过这种方法,但它会导致在Console和文件中记录.
- (BOOL)redirectNSLog
{
// Create log file
[@"" writeToFile:@"/NSLog.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
id fileHandle = [NSFileHandle fileHandleForWritingAtPath:@"/NSLog.txt"];
if (!fileHandle) return NSLog(@"Opening log failed"), NO;
[fileHandle retain];
// Redirect stderr
int err = dup2([fileHandle fileDescriptor], STDERR_FILENO);
if (!err) return NSLog(@"Couldn't redirect stderr"), NO;
return YES;
}
Run Code Online (Sandbox Code Playgroud)
是否有可能在控制台中没有日志语句但只能在文件中?