帮助我理解obj-c类的类型

时间:2012-06-07 07:22:53

标签: objective-c ios

我正在学习苹果obj-c指南,我在理解类类型方面遇到了问题,文档说

  

类定义是一种对象的规范。班级,   实际上,定义了一种数据类型。该类型不仅基于数据   结构类定义(实例变量),但也在   行为包含在定义(方法)中。可以显示班级名称   在C-for中允许类型说明符的任何地方的源代码中   例如,作为sizeof运算符的参数:

int i = sizeof(Rectangle);

sizeof是operator not c method?

请同时告诉我这意味着什么

Objects are always "typed by" a pointer.

2 个答案:

答案 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   秒前编辑