声明并访问BOOL类方法

时间:2012-12-26 22:42:46

标签: objective-c xcode class methods

Mehul has defined this method.

+(BOOL)isCameraDeviceAvailable
{
    BOOL isCameraAvailable=NO;
    if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
    {
        if([UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront] || [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear])
            isCameraAvailable = YES;
    }
    return isCameraAvailable;
}

但我无法正确宣布并收到错误

Instance method '-isCameraDeviceAvailable' not found (return type defaults to 'id')

当我声明如下时。

+ (BOOL)isCameraDeviceAvailable; 

然后以这种方式使用

if([self isCameraDeviceAvailable]){
 } 

我想我需要在不同的地方或以不同的方式宣布它。你能告诉我怎么做吗?

2 个答案:

答案 0 :(得分:4)

[self isCameraDeviceAvailable]

实例方法调用,而不是 方法调用

你必须像这样使用它:

[MyClass isCameraDeviceAvailable]

答案 1 :(得分:3)

+(BOOL)isCameraDeviceAvailable

该行开头的+使其成为一种类方法,这意味着您只能将isCameraDeviceAvailable发送到。如果您要将该方法与该类的实例一起使用,则需要使用-代替+来声明该方法:

-(BOOL)isCameraDeviceAvailable

或者,正如Kashiv解释的那样,您可以通过将isCameraDeviceAvailable发送到班级来使用该方法。有关详细信息,请参阅Objective-C Classes Are also Objects