1. 程式人生 > >重寫set和get方法後,為什麼使用時會發生無效?解析命名規範

重寫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