double 的自定义设置器
Posted
技术标签:
【中文标题】double 的自定义设置器【英文标题】:custom setter for double 【发布时间】:2012-03-28 05:51:27 【问题描述】:我有以下属性:
@property (nonatomic, assign) double lastSynced;
and here's my custom setter:
-(void)setLastSynced:(double)newLastSynced
if (lastSynced != newLastSynced)
lastSynced = newLastSynced;
[[NSUserDefaults standardUserDefaults] setDouble:lastSynced forKey:kSettingLastSyncedKey];
[[NSUserDefaults standardUserDefaults] synchronize];
我不确定为什么在设置 lastSynced 时没有调用我的自定义设置器?我把它合成为
@synthesized lastSynced。
【问题讨论】:
尝试删除@synthesize 并添加getter 方法(-(double)getLastSynced return lastSynced;
@Novarg:那么就不会有 ivar。即使在合成时,仅替换一个或另一个(或两者!)访问器方法也是有效的。
【参考方案1】:
您是否尝试过明确声明您的 setter?
@property (nonatomic, assign, setter=setLastSynched:) double lastSynced;
【讨论】:
【参考方案2】:在合成中你在创建自定义设置器时没有写 lastSynced = _lastSynced 是非常糟糕的,因为在设置器内部你试图调用你的设置器。 尝试:
@synthesize lastSynced = _lastSynced
-(void)setLastSynced:(double)newLastSynced
if (_lastSynced != newLastSynced)
_lastSynced = newLastSynced;
[[NSUserDefaults standardUserDefaults] setDouble:_lastSynced forKey:kSettingLastSyncedKey];
[[NSUserDefaults standardUserDefaults] synchronize];
【讨论】:
setter 内部没有使用。你是从哪里得到这个想法的?以上是关于double 的自定义设置器的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin Forms Shell 如何使用自定义渲染器自定义选项卡