从Objective-C指针到int *的隐式转换不允许使用ARC

时间:2012-08-20 18:27:41

标签: objective-c ios xcode

我有一个类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

3 个答案:

答案 0 :(得分:4)

确保#import "DMGStatController.h",并且标头包含@class DMGSecondaryStatController。您可能会警告它不知道DMGSecondaryStatController是什么,并且它默认为int。确保ObjC代码中没有警告。大多数ObjC“警告”实际上都是错误的。

答案 1 :(得分:2)

我认为你应该改变

#import "DMGSecondaryStatViewController.h"

@class DMGSecondaryStatViewController;

答案 2 :(得分:-2)

要学习的课程:编译器是对的。心理态度“我不知道编译器在说什么”会阻止您找到解决方案。你坚持你的代码是正确的,所以你找不到错误。正确的态度是“我犯了一个错误。我犯了什么错误?”

如果再打开几个警告,你可能会发现编译器找不到委托方法,因此对委托方法的参数做了一些假设,然后抱怨因为转换不是不允许。