簡體   English   中英

“ AppDelegate”沒有可見的@interface聲明選擇器“ displayMessage”

[英]No visible @interface for 'AppDelegate' declares the selector 'displayMessage'

我正在看這本書的一個教程:

http://books.google.co.uk/books?id=6WtVAQAAQBAJ&pg=PA569&lpg=PA569&dq=%5Bself+displayMessage:+kDenied%5D&source=bl&ots=PSj5Nu_QyI&sig=VHOeJtYHARgMOqSEdREyCtcgxc8&hl=en&sa=X&ei=b2rxUv-iN4WQhQfwxIGYDQ&ved=0CC0Q6AEwAA#v= onepage&q =%5Bself%20displayMessage%3A%20kDenied%5D&F =假

但是,當我將此代碼放入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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM