我正在学习苹果obj-c指南,我在理解类类型方面遇到了问题,文档说
类定义是一种对象的规范。班级, 实际上,定义了一种数据类型。该类型不仅基于数据 结构类定义(实例变量),但也在 行为包含在定义(方法)中。可以显示班级名称 在C-for中允许类型说明符的任何地方的源代码中 例如,作为sizeof运算符的参数:
int i = sizeof(Rectangle);
sizeof是operator not c method?
请同时告诉我这意味着什么
Objects are always "typed by" a pointer.
答案 0 :(得分:0)
很抱歉,但可能你应该从比较容易的东西开始,然后obj-c。
在OOP(面向对象编程)中,您从基类型(int,long,char,有时是字符串等)开始。 然后你有一个包含基类型属性和方法的类(类似于C中的struct)。
通常可以实例化一个类,这意味着您可以创建该类型的对象。 E.g。
class Person {
int age;
string name;
string surname;
void printFullName() {
Console.WriteLine(name + " " + surname);
}
}
如果你写
var myperson = new Person();
您创建了一个类型为Person的新对象,其中包含
myperson.printFullName();
您可以访问其方法printFullName()
在示例中, sizeof 是一元C运算符(如++或 - ),矩形是类型,类。
顺便说一句,这个例子有点混乱,寻找另一个。
对象始终由“指针”键入。
表示您创建的任何对象都由定义其类型的指针表示 嗯,很难解释:)
希望此代码可以帮助您:)
答案 1 :(得分:0)
是sizeof()来自c。 Objective-C是c的扩展,因此您可以在c中执行所有操作,您可以在objective-c中执行。
对象始终由“指针”键入。
这意味着您始终通过指向其实例的指针来引用对象。我希望你熟悉C ++,因为我将用它来实际证明这一点......
// C++ "typed by pointer"
Object *obj = new Object();
obj->member = NULL;
// Obj-C "typed by pointer"
NSObject *obj = [[NSObject alloc] init];
obj.property = nil;
// C++
Object obj;
obj.member = NULL;
// Obj-C
NSObject obj; // THIS WILL NOT COMPILE
希望有道理。
修改
我已经修改了我原来的答案中的评论“clarifiy”打字 通过“。 - Chris Heyes 8分钟前
“静态输入”或“强类型”对操作施加限制 对象或数据类型。如果“弱打字”没有,允许 运算符重载。 - Chris Heyes 5分钟前
“泛型类型”的一个例子是引用一个抽象类(读取 多态性)。这是继承的“弱打字” 对象可以由声明为的“泛型”指针引用 编译器作为抽象对象类型。 (注意:尽量不要混淆, “打字”和类/数据类型因为这些不同) - Chris Heyes 49 秒前编辑