我没有任何实例变量,但也许我应该?我可以为NSDate * lastUnlocked添加一个.
到目前为止,这是相关的代码:
// PasscodeLock.hextern Nsstring *const kPasscodeLastUnlocked;@interface PasscodeLock : NSObject {}- (BOol)isImmediate;- (voID)setImmediate:(BOol)on;- (NSDate *)lastUnlocked;- (voID)resetLastUnlocked;- (voID)setLastUnlocked:(NSDate *)lastUnlocked;@end// PasscodeLock.m#import "PasscodeLock.h"Nsstring *const kPasscodeLastUnlocked = @"kPasscodeLastUnlocked";@implementation PasscodeLock#pragma mark PasscodeLock- (BOol)isImmediate { return self.lastUnlocked == nil;}- (voID)setImmediate:(BOol)on { if (on) { [self resetLastUnlocked]; } else { self.lastUnlocked = nil; }}- (NSDate *)lastUnlocked { return [[NSUserDefaults standardUserDefaults] objectForKey:kPasscodeLastUnlocked];}- (voID)resetLastUnlocked { NSDate *Now = [[NSDate alloc] init]; self.lastUnlocked = Now; [Now release];}- (voID)setLastUnlocked:(NSDate *)lastUnlocked { [[NSUserDefaults standardUserDefaults] setobject:lastUnlocked forKey:kPasscodeLastUnlocked];}
然后,在一个将PasswordLock * passwordLock作为实例变量的视图控制器中,我想做passcode.immediate = NO,但是我在“PasscodeLock *”类型的对象上找不到“属性’立即’的错误.”
如何获得passcode.immediate = NO?
解决方法 我认为问题是你的getter和setter名称不一致.默认情况下,如果你有foo.immediate
在你的代码中,it is assumed getter和setter分别命名为-immediate和-setImmediate:您的getter未正确命名.解决这个问题的最佳方法是声明Mark和Kenny已经说过的属性,但你也可以更改你的getter的名字.
关键是你不需要声明属性来使用点语法,但是如果要使用点语法,则声明属性是声明getter和setter的推荐方法.
总结以上是内存溢出为你收集整理的Objective-C:自定义BOOL访问器(getter和setter)方法全部内容,希望文章能够帮你解决Objective-C:自定义BOOL访问器(getter和setter)方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)