您好,我对编程很陌生,但我一直在学习 Objective C 的一些教程。我刚刚在异常处理教程中遇到了一个问题,好吧,我的代码并没有以同样的方式工作。
首先这是我的主要代码:
#import < Foundation/Foundation.h>
#import "Numz.h"
int main(int argc, const char * argv[]){
@autoreleasepool {
Numz *n = [[Numz alloc]init];
@try {
[n thisisgoingtogetanerror] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< error on this line
}
@catch (NSException *e) {
NSLog(@"you got an error in your program");
}
NSLog(@"this is code aftr the error");
}
return 0;
}
上面的错误说
no visible @interface for 'Numz' declares the selector 'thisisgoingtogetanerror'
我的接口(interface)和实现已创建,但内部没有创建变量或方法,但这不是我需要首先处理错误的原因吗?
此外,我也无法获得任何类型的控制台 View ,构建失败并指出该错误。
我可能需要更改 xcode 4.6 中的一些设置,但我无法让代码运行并处理错误。我在网上查过,找不到任何答案。
任何帮助都会很棒。
最佳答案
编译器正在提示,因为您正在调用一个它从未见过声明的方法。
将其更改为(假设 Numz
不是 NSArray
的子类,也不实现 count
方法):[n count];
.
请注意,您永远不应该使用异常来进行流控制。也就是说,您不应该 @throw
一个异常然后使用@catch
处理异常并继续执行。 iOS/Cocoa 中的异常仅用于指示不可恢复的错误。
试试这个:
@interface NSObject(Badness)
- (void)methodBadness;
@end
然后在您的代码中调用该方法。编译器不应该警告,运行时应该@throw。
关于objective-c - 异常处理帮助 Xcode 4.6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16886263/