[英]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;
似乎MMbool
和MMbool2
應該是輸出參數,你需要通過引用傳遞它們。
所以,而不是像這樣調用: [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.