當我在閱讀關於新的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