当我在阅读关于新的4.0.2 iOS更新时,我想知道黑客做什么或尝试用缓冲区溢出做什么,在一些维基百科之后,我有兴趣玩malloc,从而创建我自己的“NSObject”。从零开始重新实现NSObject
我实际上并没有打算在我的任何应用程序中使用它,它仅用于学习和使用objective-c。
当然,正如我所料,我遇到了一些我无法解决的问题。
创建我的对象我这样做:
+ (id)create{ return malloc(sizeof(self)); }
和
- (void)free { free(self); }
致电时[TestObject的创建]。我收到以下控制台消息:
“8/11/10 11:17:31 PM TestingHeap [2675] *** NSInvocation:warning:类'AObject'的对象0x100002100未实现doesNotRecognizeSelector: - abort”
所以它试图处理我的对象作为NSObject ..?我该如何解决这个问题。
另外,当编译没有Foundation或AppKit时,我得到一个错误的符号, __objc_empty_vtable和__objc_empty_cache特别是。 我试过包括几个头文件从/ usr/include/objc/
在此先感谢。
更新
与libobjc链接之后试图调用从我的类中的方法当我收到EXC_BAD_INSTRUCTION。
你可能想看看NSObject协议,如果您尚未:http://developer.apple。 com/mac/library/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html – Justin 2010-08-11 22:08:03
包含头文件不会解决来自链接器的丢失符号错误。您需要链接到libobjc(通常由Foundation完成)。 – 2010-08-12 08:42:30
反正你可能不想使用sizeof(self)来获得大小。 'self'是一个指针,所以你只需要获得指针的大小。您可以使用'class_getInstanceSize'来代替。 – David 2010-08-12 11:49:03