gpt4 book ai didi

ios - Objective C 接口(interface)下的声明

转载 作者:可可西里 更新时间:2023-11-01 03:17:21 25 4
gpt4 key购买 nike

我正在学习 Big Nerd Ranch 的 Objective C 编程书籍。我看到了如下代码:

@interface BNREmployee : BNRPerson
{
NSMutableArray *_assets;
}


@property (nonatomic) unsigned int employeeID;
@property (nonatomic) unsigned int officeAlarmCode;
@property (nonatomic) NSDate *hireDate;
@property (nonatomic, copy) NSArray *assets;

-(double)yearsOfEmployment;
-(void)addAsset:(BNRAsset *)a;
-(unsigned int)valueOfAssets;

这段代码中,为什么要在接口(interface)下声明NSMutableArray *_assets?这与将其声明为属性有何不同,它的作用是什么?

最后,我看到属性中有一个 NSArray *assets。这与 NSMutableArray *_assets 基本相同吗?

最佳答案

在这里,您要声明一个名为 _assets 的实例变量:

@interface BNREmployee : BNRPerson {
NSMutableArray *_assets;
}

您现在可以在类的实现中使用此变量:

_assets = @[ @1, @2, @4 ].mutableCopy;
NSLog(@"The Answer is %@.", _assets[0]);

但是,实例变量在 Objective-C 中是私有(private)的,如果您不想让任何其他东西访问它,这很好。但是,如果您需要其他类能够访问和/或更改 assets 怎么办?

在大多数情况下,您会希望使用属性 iVar。

通过使用一个属性,我们会自动创建 setter 和 getter,这意味着这可以被覆盖以进行自定义并被其他类使用(如果放在 header .h 文件中)。

@property (nonatomic, assign) NSMutableArray *assets;

NSMutableArray 只是 NSArray 的可变(可编辑)对应物,这意味着我们可以通过插入新值、删除旧值和移动索引来修改数组的值。

关于ios - Objective C 接口(interface)下的声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29930290/

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