我在 Objective-C 世界中迈出了我的第一个绊脚石,还有一本关于这个主题的书。我现在已经到了将创建和使用自定义类的概念内化的阶段。
我猜想正确理解这些基本概念和原则是我未来学习 Objective-C 的关键,我只是想和你核实一下是否正确掌握了这些概念。
因此,在创建自定义类时,我了解到这是在两个单独的文件中完成的——公共类头文件和类实现文件。为了将这个概念内化,我将其比喻为“魔术师”在观众面前表演魔术。
头文件有点像魔术师表演的剧场外的海报。在进入之前,我们都可以看到魔术师长什么样(属性),他(主要是“他”)可以执行哪些技巧(方法),以及他可以制作哪些类型的魔术(类型声明) )。因此从魔术师的这张“公开”海报(头文件)中,我可以了解到他可以施展什么样的魔术,使用什么道具。也许还提到了这位特殊的魔术师从伟大的胡迪尼(阶级遗产和胡迪尼因此成为超阶级)那里学到了一些技巧。
如果让我在后台,我就可以真正看到他是怎么弄的,也就是说,我可以查看魔术师的实现文件。
这个比喻会不会有点像您如何理解自定义类的概念?
但是,我还没有弄清楚类方法和实例方法的概念与这个比喻有什么关系?
你能说实例方法属于魔术师这个特殊“实例”在这个特定节目中表演的一种技巧,而类方法将是当代魔术师可以表演的技巧吗?第三,方法使用“类型”的方式有点令人困惑。有些似乎是在接口文件中预先声明的,有些似乎只是在方法中动态“声明”?
以使用“Magician”类为例,我对头文件的理解可能是这样的:
@interface Magician : NSHoudini
// Instance method that given a variable of type rat it will turn this into something of type rabit
- (rabit) FromRatToRabit: (rat) aRat;
@end
实现文件可能如下所示:
#import “Magician.h”
@implementation Magician
rabit aRabit
// rabit being the type and aRabit the variable
- (rabit) FromRatToRabit:(rat)aRat;
{
// some magic code goes here which will take what’s in the aRat variable, of type rat
// and turn it into a form of type rabit and return it in the aRabit variable
aRabit
}
@end
如果以上是正确的,我想知道为什么没有声明您“提供”该方法的 aRat 变量?或者当您在方法描述中使用它时是否认为声明已完成?