1

我有一个 DMGStatController 类,它有一个 DMGSecondaryStatViewController 类型的委托。我写

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

正是这第二行代码给了我错误“ARC不允许从Objective-C指针到int *的隐式转换”。我不知道编译器在说什么... DMGStatController 的属性委托是 DMGSecondaryStatViewController 类型,而不是 int *。任何帮助将非常感激。

另外,这里是我声明委托的地方。

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


@interface DMGStatDescriptionViewController : UIViewController{

}

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

@end
4

3 回答 3

4

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

于 2012-08-20T18:33:54.307 回答
4

我觉得你应该改变

#import "DMGSecondaryStatViewController.h"

@class DMGSecondaryStatViewController;

于 2012-10-26T03:20:49.527 回答
-3

教训:编译器是对的。“我不知道编译器在说什么”的心理态度使您无法找到解决方案。你坚持你的代码是正确的,所以你找不到错误。正确的态度是“我犯了错误。我犯了什么错误?”

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

于 2014-02-24T11:19:42.333 回答