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

今天博主偶然遇到如题的问题,方法写的没错,都是一一对应的,但就是不调用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

你可能感兴趣的:(iOS日常开发)