我希望NSDate
设置NSInteger
,我@property
:
@property (strong,nonatomic) NSDate *date;
我想要二传:
-(void)setDate:(NSInteger *)tStamp {
thumbImgUrl = [NSDate dateWithTimeIntervalSince1970:tStamp];
}
所以我想从NSInteger
值而不是NSDate
值设置我的日期。我如何声明这个二传手?当我尝试将它放在头文件中时,它可以正常工作,但我收到了警告:
Type of property 'date' does not match type of accessor 'setDate:
如果我想在 .m 文件中声明它,我会收到错误:
duplicate declaration of method setDate:
为什么呢?有一种方法可以使用不同的输入类型声明setter吗?
答案 0 :(得分:5)
通常,这是在Objective-C中执行操作的一种非常糟糕的方式,我强烈建议您将方法名称更改为其他内容,例如-(void)setDateWithInteger:(NSInteger)tStamp
。 (说到这个,NSInteger是一个原始的,而不是一个对象)并且回答你的问题,不,如果你使用@property
,就没有办法用不同的输入类型声明一个setter。如果您坚持按照自己的方式进行操作,则必须在不使用@property
的情况下声明方法。
答案 1 :(得分:0)
您可以接受id
类型作为setter函数的输入参数。
您收到duplicate declaration of method setDate:
,因为您的实施文件中很可能有@synthesize date
行。这会自动为您生成getter / setter。删除该行,因为您提供自己的实现。