Objective c 发送到实例0x10010c730的选择器无法识别->;目标C
我是编程新手。我看过这段代码。将派生类对象返回到基类。 这样基类就可以指向派生类方法。 这里,类B中的静态函数将其对象返回到基 班级 基类Objective c 发送到实例0x10010c730的选择器无法识别->;目标C,objective-c,Objective C,我是编程新手。我看过这段代码。将派生类对象返回到基类。 这样基类就可以指向派生类方法。 这里,类B中的静态函数将其对象返回到基 班级 基类 #import <Foundation/Foundation.h> #import "B.h" int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; [B p]; [p
#import <Foundation/Foundation.h>
#import "B.h"
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
[B p];
[pool drain];
return 0;
}
B.h
p
是一种类方法。在Obj-C中,通过在方法声明中使用+
和-
来表示类方法。您可以使用以下方法调用类方法:
// [ClassName methodName];
[B p];
或者您可以通过以下方式将p
更改为实例方法:
- (A *)p;
// and call
// [instanceName methodName];
[dep p];
您可以检查以开始使用这些
p
是一种类方法。在Obj-C中,通过在方法声明中使用+
和-
来表示类方法。您可以使用以下方法调用类方法:
// [ClassName methodName];
[B p];
或者您可以通过以下方式将p
更改为实例方法:
- (A *)p;
// and call
// [instanceName methodName];
[dep p];
您可以检查以开始使用这些 内存管理也有一些混乱,如下所示:
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
B* der = [[B alloc]init];
[der p];
[pool drain];
您创建并排空自动释放池,以便(在创建之后)将内容放入其中,然后立即(在排空时)处置它们。但是你没有把任何东西放进游泳池。您已经使用“alloc”创建了“der”,这意味着您出于内存管理的目的“拥有”了它,而不是将它放在自动释放池中,在那里它将被自动处理
如果我所做的只是让你更加困惑,你可能应该看看一些关于Objective-C的介绍性书籍。它们在某个时候都涉及到这个话题。或者你可以看看苹果公司关于内存管理的文档,但他们认为你已经知道某些事情。(这很让人困惑,所以请耐心等待…您的内存管理也有一些困惑,如下所示:
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
B* der = [[B alloc]init];
[der p];
[pool drain];
您创建并排空自动释放池,以便(在创建之后)将内容放入其中,然后立即(在排空时)处置它们。但是你没有把任何东西放进游泳池。您已经使用“alloc”创建了“der”,这意味着您出于内存管理的目的“拥有”了它,而不是将它放在自动释放池中,在那里它将被自动处理
如果我所做的只是让你更加困惑,你可能应该看看一些关于Objective-C的介绍性书籍。它们在某个时候都涉及到这个话题。或者你可以看看苹果公司关于内存管理的文档,但他们认为你已经知道某些事情。(这很让人困惑,所以请耐心等待……谢谢你指出。我会检查内存管理文档。谢谢你指出。我会检查内存管理文档。
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
B* der = [[B alloc]init];
[der p];
[pool drain];