Does Missing method signature causes app abort?
这是错误信息:
警告:\\'ReaderAppDelegate\\' 可能不会响应 \\'-checkForDatabase\\'
(没有匹配方法签名的消息将被假定返回 \\'id\\' 并接受 \\'...\\' 作为参数。
我在下面代码中的 \\'checkForDatabase\\' 方法处设置了一个断点,但它从未到达那里......应用程序死了。我假设他上面的警告与中止有关。我该如何解决?我必须在我的 .h 文件中声明 \\'checkForDatabase\\' 吗?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | //--------------- application finished launching ----------------| - (void)applicationDidFinishLaunching:(UIApplication *)application { // create the d/b or get the connection value [self checkForDatabase]; } //-------------- check for database or create it ----------------| - (void)checkForDatabase { NSFileManager *filemanager = [NSFileManager defaultManager]; NSString *databasePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingString:@"/ppcipher.s3db"]; if(![filemanager fileExistsAtPath:databasePath]) { //Database doesn't exist yet, so we create it... NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/ppcipher.s3db"]; // remainder of code goes here... } } |
正如你提到的,你需要在你的接口中声明函数,否则动态(即:运行时)绑定不会知道该方法存在。
您要么需要在头文件中声明 checkForDatabase,要么在实现文件中的私有类别中声明。您还可以在 applicationDidFinishLaunching.
的实现之上定义方法实现
在类的接口中声明 -checkForDatabase 方法是个好主意,但我认为这不是导致崩溃的原因。查看控制台中可能指示崩溃原因的消息。