objective-c - Objc - 在 ivars 和实例方法上调用和设置值

标签 objective-c class methods instance

我不明白我在这里可能做错了什么,因为我正在遵循一本说明书 - 关于设置调用类方法的值。我已经#imported了它,一切都应该没问题。但是 Xcode 提示:不知道“setWeightInKilos 和”setHeightInMeters 的类方法选择器。这些实例方法是在“Person”类中实现的,所以我不知道为什么会这样。

    Person *aPerson = [[Person alloc] init]; 
    [Person setWeightInKilos:96];
    [Person setHeightInMeters:1.8];
    float bmi = [Person bodyMassIndex];

最佳答案

这些是实例 方法,而不是 方法。因此,您应该使用变量 aPerson 的名称在实例上调用它们,而不是类 Person 的名称:

Person *aPerson = [[Person alloc] init];
[aPerson setWeightInKilos:96];
[aPerson setHeightInMeters:1.8];
float bmi = [aPerson bodyMassIndex];

一般来说,所有在前面用-声明的方法都接受一个带有该类实例的变量;用 + 声明的方法采用类名。

如果 heightInMetersweightInKilos 被声明为属性,您还可以使用另一种语法:您可以编写

aPerson.weightInKilos = 96;
aPerson.heightInMeters = 1.8;

不过,这只是同一事物的不同语法;在这两种情况下都会调用 setter 方法。

关于objective-c - Objc - 在 ivars 和实例方法上调用和设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11497801/

相关文章:

objective-c - iOS - 识别之前在 UINavigationController 中显示的 UIViewController

ios - CoreLocation 闲置后停止获取更新

oop - Lua类继承问题

java - 如何从另一个扩展 ActionBarActivity 的类向我的主要 Activity 添加操作栏?

c# - 方法调用中的分配不好的做法?

java - 空白检测器返回错误

ios - 如何自定义 UICollectionView Cell 以显示如附件所示的图像网格?

objective-c - 如何强制 NSSplitView 的所有 subview 在启动时可见?

c++ - 引用微分函数

java - Java中的方法和数组