我原来是一名Java程序员,现在使用Objective-C.我想创建一个抽象类,但在Objective-C中似乎不可能.这可能吗?
如果没有,我可以在Objective-C中获得一个抽象类的接近程度?
为什么不ProjectName-Prefix.pch自动创建Xcode 6?
是否不再需要预编译头?
我应该在哪里写下之前的代码ProjectName-Prefix.pch?
我在这个网站上被告知了几次,但我想确保确实如此.
我希望能够在我的代码中撒上NSLog函数调用,并且Xcode/gcc会在构建我的Release/Distribution版本时自动删除这些调用.
我应该避免使用它吗?如果是这样,有经验的Objective-C程序员之间最常见的选择是什么?
目前,我们正在定义一个扩展日志机制来打印出日志的类名和源行号.
#define NCLog(s, ...) NSLog(@"<%@:%d> %@", [[NSString stringWithUTF8String:__FILE__] lastPathComponent], \
__LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__])
Run Code Online (Sandbox Code Playgroud)
例如,当我调用NCLog(@"Hello world")时; 输出将是:
<ApplicationDelegate:10>Hello world
Run Code Online (Sandbox Code Playgroud)
现在我还想注销方法名称,如:
<ApplicationDelegate:applicationDidFinishLaunching:10>Hello world
Run Code Online (Sandbox Code Playgroud)
因此,当我们知道调用哪种方法时,这将使我们的调试变得更容易.我知道我们也有Xcode调试器,但有时候,我也希望通过注销来进行调试.
从XCode 4开始,现在有一个Code Snippets部分,在输入时通过自动完成提供片段.我对你们都存储在那里的片段非常感兴趣.哪些片段可以节省您最多的时间(以及为什么)?
请仅发布实际的片段(意思是没有讽刺的"不需要没有stinkin'片段",也没有"我喜欢<XYZ>"的片段),只有短片和甜片(即不超过~20行)至多,最多...).如果一个片段显然没用,也可以解释为什么你认为它是.;)
我正在尝试调试我正在研究的iPhone应用程序,并且为各种源文件添加50个NSLog语句的想法给了我一些想法.
我想做的是写一对陈述,比方说
NSString *methodName = [self methodName];
NSLog(@"%@", methodName);
Run Code Online (Sandbox Code Playgroud)
我可以粘贴到我需要的每个方法中.有没有办法做到这一点?是否有一些Objective-C构造用于询问方法的名称?或者我必须以艰难的方式做到这一点?
我正在开发一个与闪电配件对话的iOS应用程序.现在,当连接附件时,我无法使用闪电端口在xcode中调试我的应用程序.
当闪电配件连接到iOS设备时,有没有办法将调试器连接到我的应用程序?
要么
我可以以某种方式将闪电配件连接到我的Mac,并在模拟器中调试吗?
我知道有些人在谈论WiFi调试,但Xcode 6不支持.
我不幸地提交了一个NSLog仍处于活动状态的应用程序.它很少发生火灾,但我想知道我的应用被拒绝的可能性是什么?
我不是在问如何压制NSLog.我已经知道怎么做了.它只是一个迷路的NSLog,它误导了它.
使用iphone sdk 4.0我想从这个宏中删除函数名称的东西,但我正在努力
#define LOG(fmt, ...) NSLog((@"%s " fmt), __PRETTY_FUNCTION__,##__VA_ARGS__)
Run Code Online (Sandbox Code Playgroud)
我试过了
#define LOG(fmt, ...) NSLog((@"%s " fmt), ##__VA_ARGS__)
Run Code Online (Sandbox Code Playgroud)
但这会导致崩溃!!
我希望能够像这样记录
LOG("text to log");
LOG("text to log with param %d", param); etc
Run Code Online (Sandbox Code Playgroud) 在我的记忆中,有一些代码可以让NSLog发布时不起作用。
我不想NSLog在我的代码中删除我的。它对调试模式有很大帮助。
所以我想找到一种方法可以将它们留在我的代码中,并且在发布时也不会减慢应用程序的速度。
谢谢你的帮助~~
我有以下简化的代码示例:
// in .h file
// define a macro for partial method
#define debugWithMsg context:(CFStringRef)__FUNCTION__ lineNumber:__LINE__ debug:
@interface MyLogger : NSObject {
...
}
- (void) context:(CFStringRef)function
lineNumber:(int)line
debug:(NSString*)messageFormat, ...;
@end
Run Code Online (Sandbox Code Playgroud)
我在其他类中使用此方法将调试消息打印到XCode控制台.这是一个测试我的调试方法的例子(在带有表视图的MyViewController类中):
- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section {
...
// myLogger is an instance of MyLogger.
[myLogger debugWithMsg@"something for %@", @"testing!"];
...
}
...
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
...
[myLogger debugWithMsg@"something for %@", @"another testing!"];
...
}
Run Code Online (Sandbox Code Playgroud)
上面的例子效果很好; 但是,对我来说,它看起来不像标准的C/C++或ObjC语法.我需要使用这个宏的原因是我想将前两个参数作为"常量"传递给方法.实际上,这两个参数也是宏:__FUNCTION__是C++宏,__LINE__是C标准宏.这两个特殊宏将动态映射到函数的字符串和调用方法的行号.例如,上面的调试方法调用在XCode控制台中打印一个msg,如下所示:
[timestamp] -[MyViewController tableView:numberOfRowsInSection:] line:107 - something for testing!
... …Run Code Online (Sandbox Code Playgroud) 我想知道有多少类型的od日志以及何时使用什么类型的日志.现在我一直在使用NSLog但是当我最终将applcation提交到app store时我需要搜索nslog并需要关闭所有我听说过Dlog,Alog但不知道如何使用.所以当我们选择发布,调试模式时,是否有任何解决方案可以设置Log.如果你能为我提供不同日志类型的代码以及如何使用它们.