`
runfeel
  • 浏览: 935914 次
文章分类
社区版块
存档分类
最新评论

object-c 中的 self 含义

 
阅读更多

self就是当前实例的指针。

所以 看这个例子:

SuperClass

SubClass : SuperClass

#import <Foundation/Foundation.h>


@interface SuperClass : NSObject {
@private
    
}

- (void) printSelf;

@end
@implementation SuperClass

- (void) printSelf
{
    NSLog(@"%@", [[self class] description]);
}

SubClass 中的代码中的

@implementation SubClass

- (void) printSelf
{
    [super printSelf];
    
    NSLog(@"%@", [[self class] description]);
}

那么当

SubClass* subc = [[SubClass alloc] init];


[subc printSelf];

结果会输出什么呢?

2011-09-17 17:38:55.829 TestSelfClass[755:903] SubClass
2011-09-17 17:38:55.830 TestSelfClass[755:903] SubClass

是的是 SubClass 并没有 superclass.

这个特性有助于我们写copy函数,分配内存的时候分配的是子类的内存 而不是 父类的内存。





分享到:
评论

相关推荐

    ios开发ios基础开发面试题.txt

    - 在Objective-C中,`self`通常指当前对象自身,而没有两个`self`的情况。可能是提问者想了解`self`和`_self`的区别。 - **self**:指向当前对象的引用。 - **_self**:不是Objective-C的标准语法,可能是指类的私有...

    无涯教程(LearnFk)-iOS教程离线版.pdf

    Objective-C编程语言在iOS应用开发中占据重要位置,开发者需要掌握计算机编程的基本概念和Objective-C的基础知识,才能有效地进行iOS平台的应用开发。随着每年主要版本的更新,iOS系统不断引入新的特性和改进,为...

    iOS笔试题041

    在iOS开发中,Objective-C(Object-C)是主要的编程语言。以下是对题目中提到的知识点的详细解释: 1. **Object-C的继承机制**: - Objective-C不支持多继承,以避免复杂的继承关系导致的问题。为了实现类似的功能...

    python使用serial模块,通过串口控制云台(基于PELCO-D协议)(csdn)————程序.pdf

    在本文中,我们将探讨如何使用Python的`pyserial`模块通过串口控制云台,具体是基于PELCO-D协议的通信。PELCO-D协议是一种广泛用于安防监控系统中的云台控制协议,它允许设备(如摄像头)接收并执行控制指令。 首先...

    2021-2022计算机二级等级考试试题及答案No.1855.docx

    - C语言中,直接赋值字符串给字符指针变量会导致编译警告。 #### 10. Java中的Switch Case语句 - **正确答案**:C. 2。 - 当`m`的值为2时,会执行`case 2:`下的`default`分支。 #### 11. Access数据库对象 - *...

    kv0的原理和使用

    3. **处理观察回调**:在观察者中实现`-observeValueForKeyPath:ofObject:change:context:`方法,这是观察者接收到通知时被调用的方法,可以在这个方法中处理属性变化的相关逻辑。 4. **取消观察**:在不再需要观察...

    python面试题

    这与C语言中的指针类似,但又有本质的区别。Python中所有变量都是对内存中某个对象的引用。 - **不可变对象与可变对象的区别** - 不可变对象包括字符串、元组和数字等。这些对象一旦创建后,其内容不能被改变。...

    网讯iOS笔试题

    题目提到的`dealloc`方法是Objective-C中用于释放对象占用的内存的方法。在以下示例中: ```objective-c ClassA* obj1 = [[ClassA alloc] init]; ClassA* obj2 = obj1; [obj1 hello]; [obj1 dealloc]; [obj2 hello]...

    Python面向对象特殊属性及方法解析

    print(C.__mro__) # 输出:(&lt;class '__main__.C'&gt;, , , &lt;class 'object'&gt;) ``` 6. **`class.__subclasses__()`** - **含义**:返回一个列表,包含当前类的所有直接子类。 - **示例**: ```python class A: ...

    CS_Python_Basic

    文章目录PythonpipPython函数和语法excel获取数据类型Class(object):中object的作用if __name__ == ‘__main__’: 的作用zip()enumerate() 方法with语法self的含义切片...Python pip pip list 查看安装了哪些包 ...

    Python接口测试结果集实现封装比较

    在接口测试过程中,验证接口返回的结果是否符合预期是至关重要的步骤。这通常涉及到断言操作,即比较实际结果和预期结果是否一致。本文主要探讨如何在Python中对接口测试结果集进行封装,以便更高效地进行比较和断言...

    python中单下划线_的常见用法总结

    在Python编程语言中,单下划线(_)与双下划线(__)在变量名的使用上有着特殊的含义和约定,它们在不同的上下文中有不同的用法。在Python中,下划线的使用并不影响解释器的解析,更多的是作为一种编码风格和...

    ruby初学者教程(对初学者很有帮助)

    特殊方法是指那些在Ruby中具有特殊含义的方法,例如`initialize`、`==`等。 **3.5 类变量与类方法** 类变量是以`@@`开头的变量,可以在类的所有实例之间共享。类方法则是定义在类本身上的方法。 ```ruby class ...

Global site tag (gtag.js) - Google Analytics