加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Objective-C:自定义BOOL访问器(getter和setter)方法

发布时间:2020-12-16 10:43:10 所属栏目:百科 来源:网络整理
导读:我知道有人已经问过 Writing getter and setter for BOOL variable.但是,如果我正在定义一个定制的吸气剂和放大器setter方法setImmediate isImmediate分别,我想使用passcode.immediate = NO来工作. 我没有任何实例变量,但也许我应该?我可以为NSDate * lastU
我知道有人已经问过 Writing getter and setter for BOOL variable.但是,如果我正在定义一个定制的吸气剂和放大器setter方法setImmediate& isImmediate分别,我想使用passcode.immediate = NO来工作.

我没有任何实例变量,但也许我应该?我可以为NSDate * lastUnlocked添加一个.

到目前为止,这是相关的代码:

// PasscodeLock.h

extern 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的推荐方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读