您的位置:首页 > 移动开发 > IOS开发

iOS - 重写set和get方法后,为什么使用时会发生无效?解析命名规范

2016-07-22 15:33 543 查看
今天博主偶然遇到如题的问题,方法写的没错,都是一一对应的,但就是不调用set方法,百度了很多,有人说要强制写@synthesize,还有的说@property有没有写,之类的,既然重写了get,set方法,@property肯定是不会缺失的,都是一些不疼不痒的回答。

博主看了下写出来的效果,发现并非是所有的get,set方法都无效,对比了下,终于发现问题在哪里了,

举例说明:

.h中声明

/**
*  值
*/
@property(nonatomic,assign)CGFloat value;
/**
*  值为0时slider颜色
*/
@property(nonatomic,strong)UIColor *preBackgroundColor;

/**
*  进度条setter方法
*
*  @param value 进度
*/
- (void)setValue:(CGFloat)value;

/**
*  设置进度条底色
*
*  @param preBackgroundColor 颜色
*/
- (void)setPreBackgroundColor:(UIColor *)preBackgroundColor;

.m中实现

- (void)setValue:(CGFloat)value
{
_value = value;
_sliderBtn.center = CGPointMake(_value * _baseView.bounds.size.width , _baseView.center.y);
_lastSliderView.frame = CGRectMake(0, 0, _sliderBtn.center.x, 20);

}
- (void)setPreBackgroundColor:(UIColor *)preBackgroundColor
{
_preBackgroundColor = preBackgroundColor;
_preSliderView.backgroundColor = _preBackgroundColor;
}


value对应setValue

preBackgroundColor对应setPreBackgroundColor

property后的属性和set后面的命名必须一样,而且遵循驼峰式命名,错一个字母都不行,驼峰命名错了也不行。

假如:preBackgroundColor对应setpreBackgroundColor(p小写了),错误,无法调用,如果preBackgroundColor和setPreBackgroundColor中的PreBackgroundColor字母不一样也是不行的,只有后面带的参数是可以一样或者不一样的。

所以在重写set和get方法时一定要注意,小写错一个字母,大小写出错都不能成功调用。

想要查看具体使用的请看下篇博客,封装slider
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: