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函数,分配内存的时候分配的是子类的内存 而不是 父类的内存。
分享到:
相关推荐
- 在Objective-C中,`self`通常指当前对象自身,而没有两个`self`的情况。可能是提问者想了解`self`和`_self`的区别。 - **self**:指向当前对象的引用。 - **_self**:不是Objective-C的标准语法,可能是指类的私有...
Objective-C编程语言在iOS应用开发中占据重要位置,开发者需要掌握计算机编程的基本概念和Objective-C的基础知识,才能有效地进行iOS平台的应用开发。随着每年主要版本的更新,iOS系统不断引入新的特性和改进,为...
在iOS开发中,Objective-C(Object-C)是主要的编程语言。以下是对题目中提到的知识点的详细解释: 1. **Object-C的继承机制**: - Objective-C不支持多继承,以避免复杂的继承关系导致的问题。为了实现类似的功能...
在本文中,我们将探讨如何使用Python的`pyserial`模块通过串口控制云台,具体是基于PELCO-D协议的通信。PELCO-D协议是一种广泛用于安防监控系统中的云台控制协议,它允许设备(如摄像头)接收并执行控制指令。 首先...
- C语言中,直接赋值字符串给字符指针变量会导致编译警告。 #### 10. Java中的Switch Case语句 - **正确答案**:C. 2。 - 当`m`的值为2时,会执行`case 2:`下的`default`分支。 #### 11. Access数据库对象 - *...
3. **处理观察回调**:在观察者中实现`-observeValueForKeyPath:ofObject:change:context:`方法,这是观察者接收到通知时被调用的方法,可以在这个方法中处理属性变化的相关逻辑。 4. **取消观察**:在不再需要观察...
这与C语言中的指针类似,但又有本质的区别。Python中所有变量都是对内存中某个对象的引用。 - **不可变对象与可变对象的区别** - 不可变对象包括字符串、元组和数字等。这些对象一旦创建后,其内容不能被改变。...
题目提到的`dealloc`方法是Objective-C中用于释放对象占用的内存的方法。在以下示例中: ```objective-c ClassA* obj1 = [[ClassA alloc] init]; ClassA* obj2 = obj1; [obj1 hello]; [obj1 dealloc]; [obj2 hello]...
print(C.__mro__) # 输出:(<class '__main__.C'>, , , <class 'object'>) ``` 6. **`class.__subclasses__()`** - **含义**:返回一个列表,包含当前类的所有直接子类。 - **示例**: ```python class A: ...
文章目录PythonpipPython函数和语法excel获取数据类型Class(object):中object的作用if __name__ == ‘__main__’: 的作用zip()enumerate() 方法with语法self的含义切片...Python pip pip list 查看安装了哪些包 ...
在接口测试过程中,验证接口返回的结果是否符合预期是至关重要的步骤。这通常涉及到断言操作,即比较实际结果和预期结果是否一致。本文主要探讨如何在Python中对接口测试结果集进行封装,以便更高效地进行比较和断言...
在Python编程语言中,单下划线(_)与双下划线(__)在变量名的使用上有着特殊的含义和约定,它们在不同的上下文中有不同的用法。在Python中,下划线的使用并不影响解释器的解析,更多的是作为一种编码风格和...
特殊方法是指那些在Ruby中具有特殊含义的方法,例如`initialize`、`==`等。 **3.5 类变量与类方法** 类变量是以`@@`开头的变量,可以在类的所有实例之间共享。类方法则是定义在类本身上的方法。 ```ruby class ...