簡體   English   中英

錯誤與指針轉換不兼容的整數

[英]Error with Incompatible Integer to Pointer Conversion

當我嘗試運行此代碼時,我收到一條錯誤消息:

不兼容的整數到指針轉換將'BOOL'(又名'signed char')發送到'BOOL *'類型的參數(又名'signed char *')

在線上

[self.MMdelegate addItemViewControllerMM:self didCheck1:checked1 didCheck2:checked2];

MatchModeViewController.h

@class MatchModeViewController;

@protocol MatchModeViewControllerDelegate <NSObject>

- (void)addItemViewControllerMM:(MatchModeViewController *)MMcontroller didCheck1:(BOOL *)MMbool didCheck2:(BOOL *)MMbool2;

@end

 @interface MatchModeViewController : UIViewController {

 BOOL checked1;   
 BOOL checked2;

}

@property BOOL checked1;
@property BOOL checked2;

@property (weak, nonatomic) IBOutlet UIButton *checkBoxButton1;

@property (weak, nonatomic) IBOutlet UIButton *checkBoxButton2;

- (IBAction)checkButton1:(id)sender;

- (IBAction)checkButton2:(id)sender;

@end

MatchModeViewController.m

@synthesize checkBoxButton1;
@synthesize checkBoxButton2;
@synthesize checked2;
@synthesize checked1;

- (void)viewDidLoad {
    [super viewDidLoad];

checked1 = NO;
checked2 = NO;

    [checkBoxButton1 setImage:[UIImage imageNamed:@"CheckBox.png"] forState: UIControlStateNormal];
    [checkBoxButton2 setImage:[UIImage imageNamed:@"CheckBox.png"] forState: UIControlStateNormal];


    UIBarButtonItem *saveButtonMM = [[UIBarButtonItem alloc]initWithTitle:@"Save" style:UIBarButtonItemStylePlain target:self action:@selector(saveButtonMMPressed)];
    self.navigationItem.rightBarButtonItem = saveButtonMM;

}

-(instancetype) init {
    if (self = [super init]) {

    }
    return self;
   }
   - (void) saveButtonMMPressed {

        if([self.MMdelegate respondsToSelector:@selector(addItemViewControllerMM:didCheck1:didCheck2:)]){

            [self.MMdelegate addItemViewControllerMM:self didCheck1: checked1 didCheck2: checked2 ];

            [[NSNotificationCenter defaultCenter]postNotificationName:@"MMNOTIFICATIONNAME" object:nil];
    }

         [self.navigationController popViewControllerAnimated:YES ];

         [self performSelector:@selector(saveButtonMMPressed) withObject:nil afterDelay:0.25];     
    }

我是xcode的初學者,非常感謝任何幫助。

您使用指向BOOL指針錯誤地定義了協議方法。 你要:

@protocol MatchModeViewControllerDelegate <NSObject>

- (void)addItemViewControllerMM:(MatchModeViewController *)MMcontroller didCheck1:(BOOL)MMbool didCheck2:(BOOL)MMbool2;

@end

還要更新此方法的任何實現以刪除指針。

這更像是一個C問題。 看看你的方法:

- (void)addItemViewControllerMM:(MatchModeViewController *)MMcontroller didCheck1:(BOOL *)MMbool didCheck2:(BOOL *)MMbool2;

似乎MMboolMMbool2應該是輸出參數,你需要通過引用傳遞它們。

所以,而不是像這樣調用: [self.MMdelegate addItemViewControllerMM:self didCheck1:checked1 didCheck2: checked2];

你應該像這樣調用它: [self.MMdelegate addItemViewControllerMM:self didCheck1:&checked1 didCheck2:&checked2 ];

checked1之前放置&發送變量的引用而不是值,因此在方法中對checked1任何更改都將在調用它的函數中可見。

LE:或者你可能不需要通過引用傳遞它們。 在這種情況下,您應該將協議方法重新定義為- (void)addItemViewControllerMM:(MatchModeViewController *)MMcontroller didCheck1:(BOOL)MMbool didCheck2:(BOOL)MMbool2; (沒有*使得BOOLs指針)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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