![](/img/trans.png)
[英]implicit conversion of an Objective-C pointer to 'void *' is disallowed with 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.