簡體   English   中英

從Objective-C指針到int *的隱式轉換不允許使用ARC

[英]Implicit Conversion from Objective-C Pointer to int * is Disallowed With ARC

我有一個類DMGStatController,它有一個類型為DMGSecondaryStatViewController的委托。 我寫

DMGStatController *controller = [[DMGStatController alloc] init]; 
controller.delegate = self;

正是這第二行代碼給出了錯誤“從Objective-C指針到int *的隱式轉換不允許使用ARC”。 我不知道編譯器在說什么... DMGStatController的屬性委托是DMGSecondaryStatViewController類型,而不是int *。 任何幫助將非常感激。

此外,這是我宣布代表的地方。

#import <UIKit/UIKit.h>
#import "DMGSecondaryStatViewController.h"


@interface DMGStatDescriptionViewController : UIViewController{

}

@property(nonatomic , retain) DMGSecondaryStatViewController *delegate; 
@property(nonatomic , retain) NSString *finalStatChosen; 

@end

確保#import "DMGStatController.h" ,並且標頭包含@class DMGSecondaryStatController 您可能會警告它不知道DMGSecondaryStatController是什么以及它默認為int 確保ObjC代碼中沒有警告。 大多數ObjC“警告”實際上都是錯誤的。

我想你應該改變

#import "DMGSecondaryStatViewController.h"

@class DMGSecondaryStatViewController;

需要學習的教訓:編譯器是對的。 心理態度“我不知道編譯器在說什么”會阻止您找到解決方案。 你堅持你的代碼是正確的,所以你找不到錯誤。 正確的態度是“我犯了一個錯誤。我犯了什么錯誤?”

如果再打開一些警告,你可能會發現編譯器找不到委托方法,因此對委托方法的參數做了一些假設,然后因為不允許轉換而抱怨。

暫無
暫無

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

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