[英]No visible @interface for 'AppDelegate' declares the selector 'displayMessage'
我正在看這本書的一個教程:
但是,當我將此代碼放入AppDelegate.m時,出現錯誤消息“'AppDelegate'的無可見@interface聲明了選擇器'displayMessage'”,但是我正在遵循編寫的代碼。
CFErrorRef錯誤= NULL;
switch (ABAddressBookGetAuthorizationStatus()) {
case kABAuthorizationStatusAuthorized:{
addressBook = ABAddressBookCreateWithOptions(NULL, &error);
[ self useAddressBook:addressBook];
// Do you work and once your finished..
if (addressBook != NULL) {
CFRelease(addressBook);
}
break;
}
case kABAuthorizationStatusDenied:{
[self displayMessage: kDenied];
break;
}
case kABAuthorizationStatusNotDetermined:{
addressBook = ABAddressBookCreateWithOptions(NULL, &error);
ABAddressBookRequestAccessWithCompletion
(addressBook, ^(BOOL granted, CFErrorRef error)
{
if (granted){
NSLog(@"Access was granted");
[self useAddressBook:addressBook];
} else {
NSLog(@"Access was not granted");
}
if (addressBook != NULL){
CFRelease(addressBook);
}
});
break;
}
case kABAuthorizationStatusRestricted:{
[self displayMessage: kRestricted];
break;
}
}
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
您正在調用以下實例方法:
[self displayMessage: kRestricted];
在您的UIApplication(AppDelegate)子類中未聲明。
要解決此問題,只需實現displayMessage:
方法:
- (void)displayMessage:(id)message
{
// do stuff here
}
該消息告訴您您正在調用方法displayMessage:
但尚未定義它。
您的書在13.1節中使用了此方法,但該節中沒有此方法的定義,但是在第19.1節中可以找到合適的定義。 該定義在警報中顯示一個字符串。
HTH
附錄
本書中所有示例的完整資源均可從GitHub下載 。 作者對您丟失的方法的定義是:
- (void) displayMessage:(NSString *)paramMessage
{
[[[UIAlertView alloc] initWithTitle:nil
message:paramMessage
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil] show];
}
您可能要下載完整的存檔,因為其他示例似乎也不完整。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.