我有一个类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
答案 0 :(得分:4)
确保#import "DMGStatController.h"
,并且标头包含@class DMGSecondaryStatController
。您可能会警告它不知道DMGSecondaryStatController
是什么,并且它默认为int
。确保ObjC代码中没有警告。大多数ObjC“警告”实际上都是错误的。
答案 1 :(得分:2)
我认为你应该改变
#import "DMGSecondaryStatViewController.h"
到
@class DMGSecondaryStatViewController;
答案 2 :(得分:-2)
要学习的课程:编译器是对的。心理态度“我不知道编译器在说什么”会阻止您找到解决方案。你坚持你的代码是正确的,所以你找不到错误。正确的态度是“我犯了一个错误。我犯了什么错误?”
如果再打开几个警告,你可能会发现编译器找不到委托方法,因此对委托方法的参数做了一些假设,然后抱怨因为转换不是不允许。