gpt4 book ai didi

ios - 在 Collection View 中设置背景颜色时点语法与方括号

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:22:06 24 4
gpt4 key购买 nike

我仍在学习 IOS SDK,所以希望这是有意义的。我仍在尝试使用点语法来解决问题。有人可以解释为什么这段代码不起作用而第二个代码起作用吗?

不工作:

-(void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionView *cell = [collectionView cellForItemAtIndexPath:indexPath];
[[cell contentView] setBackgroundColor:[UIColor blueColor]];
}

工作:

-(void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionView *cell = [collectionView cellForItemAtIndexPath:indexPath];
cell.contentView.backgroundColor = [UIColor blueColor];
}

我只是不明白为什么第一个代码不能正常工作。我正在使用最新版本的 Xcode。 setBackgroundColor 方法是否已弃用为其他方法?

最佳答案

当您使用点表示法时,请始终牢记您不需要以任何方式更改属性名称。所以如果你说有:

@property (nonatomic) NSString *message;

编译器会为您处理settergetter 方法,因此要在此属性上使用点符号,您只需要做的就是:

self.message;         // getter
self.message = @"hi"; // setter
// the only difference being - which side of the = sign is your property at

另一方面,如果您想更改 setter/getter 的行为,您然后必须按以下方式定义 setMessage 方法,以实现(不覆盖)你自己的 setter:

- (void)setMessage:(NSString *)message {
// custom code...
_message = message;
}

也许这就是您感到困惑的地方。至于 setBackgroundColor,它仍然存在,您只是不使用点符号 访问它,顺便说一下,它允许像这样的各种整洁的东西:

// .h
@property (nonatomic) int someNumber;

// .m
self.someNumber = 5; // calls the setter, sets property to 5
self.someNumber += 10; // calls the setter and getter, sets property to 15
self.someNumber++; // calls the setter and getter, sets property to 16

关于ios - 在 Collection View 中设置背景颜色时点语法与方括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16575545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com