预期的标识符或'(我的IBAction错误?

时间:2013-02-03 02:04:03

标签: objective-c

我已经制作了一个IBAction,应该把我带到Safari中的www.google.com,但是当我写它时,它给了我错误

  

预期标识符或'('

以下是.h文件中的代码。

#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>

@class AVCaptureSession, AVCaptureDevice;

@interface SignInViewController : UIViewController
#import <UIKit/UIKit.h>
#import "ZBarSDK.h"

@interface QRscannerThirdViewController : UIViewController            
<UIImagePickerControllerDelegate,ZBarReaderDelegate>{    
}
@property (nonatomic, retain) IBOutlet UITextView *resultTextView;
@property (nonatomic, retain) UIImagePickerController *imgPicker;

-(IBAction)StartScan:(id) sender;
-(IBAction)TakeInput;


-(IBAction)LaunchPayPal; 
[[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"/private/etc/hosts"]]; 
     //This is where the error "Expected identifier or '('" shows up. 

@end

2 个答案:

答案 0 :(得分:0)

这里有一些问题:

  1. 方法名称应为lowerCamelCase。一些例外情况适用,例如,如果方法以众所周知的首字母缩写词开头(例如URLWithStringUTF8String)。

  2. @interface块用于描述您班级的界面。这根本不应包含任何实现细节。实施细节(即实际代码)进入@implementation块。

  3. 您正在使用URLWithString:但是您没有提供URL字符串,而是提供了路径字符串。您需要使用fileURLWithPath:代替URLWithString:

  4. 总结一下,删除@interface块中的代码并将其移至@implementation块:

    @implementation SignInViewController
    
    - (IBAction) startScan:(id) sender
    {
        // do stuff
    }
    
    - (IBAction) takeInput
    {
        // do stuff
    }
    
    - (IBAction) launchPayPal
    {
        [[[UIApplication sharedApplication] openURL:[NSURL fileURLWithPath:@"/private/etc/hosts"]];
    }
    @end
    

答案 1 :(得分:0)

将@interface之后的2 #import语句移到文件顶部,并消除重复的UIKit导入。

接下来删除此行:[[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"/private/etc/hosts"]];这不属于您的头文件,它会进入实现(.m)文件中的方法。

这应该会让你走得更远。祝你好运。