我正在爲GUI應用程序使用MVC體系結構。模型類有一些C函數。其中一個C函數調用了Objective-C類的一些方法。我使用該類的對象調用這些方法。奇怪的事情發生在xyz方法以前的方法被稱爲完美的,但是當xyz方法被調用時,該方法和它後面的方法沒有得到執行。 我沒有得到任何錯誤。所以無法弄清楚到底發生了什麼。 任何想法可能是什麼原因呢?無法從C函數調用Objective C方法
15
A
回答
1
你肯定可以在C函數上運行Obj-C對象的方法,所以在某些時候你的代碼可能會出錯。如果我不得不猜測,這聽起來像一個對象是零,當你不希望它是。通常情況下,您首先要在函數中設置斷點,以便找出問題中的對象的狀態。
55
正如Marc所指出的那樣,您可能使用了一個對在Objective-c範圍之外未初始化的OBJC對象的引用。
這裏的C代碼調用一個ObjC對象的方法工作示例:在XYZ之前該方法
#import <Cocoa/Cocoa.h>
id refToSelf;
@interface SomeClass: NSObject
@end
@implementation SomeClass
- (void) doNothing
{
NSLog(@"Doing nothing");
}
@end
int otherCfunction()
{
[refToSelf doNothing];
}
int main()
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
SomeClass * t = [[SomeClass alloc] init];
refToSelf = t;
otherCfunction();
[pool release];
}
1
斷點,然後開始在調試器單步。它令人驚訝的是,通過單步執行調試器中的代碼可以發現多少錯誤。事實上,這實際上是一種推薦的防止錯誤的技術,可以讓您編寫任何新代碼時始終單步執行代碼。
我同意馬克,「該方法和它沒有得到執行後的方法」的經典原因是該對象引用是零,因爲[nil doAnything]什麼也不會做,並報告沒有錯誤。
0
有一個簡單的方法來做到這一點:
@implementation
// Define a object
ClassName *thisClass;
,然後初始化自
thisClass = self;
可以使用任何var和方法在C-方法
相關問題
- 1. Objective-C從類方法調用方法
- 2. 我可以從C函數調用Objective-C方法嗎?
- 3. 從C函數調用Objective-C對象方法
- 4. 如何從AudioUnits C函數調用Objective-C方法? (iOS)
- 5. 從C++調用Objective-C類方法
- 6. 調用Objective-C方法
- 7. 從復C方法調用Objective-C方法?
- 8. 從C++方法調用Objective-C方法? [2]
- 9. 如何從C方法調用Objective-C方法?
- 10. C函數與Objective-C方法?
- 11. 從Swift調用objective-c方法錯誤
- 12. 如何從JavaScript調用Objective-C方法?
- 13. 從Java調用Objective-C方法
- 14. 從CPP代碼調用Objective-C方法
- 15. 如何調用C++方法在Objective-C
- 16. 無法從java調用C++函數cocos2dx
- 17. Objective-C調用C函數
- 18. 從C++方法調用Java函數
- 19. 從JNI方法調用純C函數
- 20. Objective C調用方法語法
- 21. 無狀態靜態方法與Objective-C中的C函數的比較Objective-C
- 22. 你可以從C/C++調用Objective-C方法嗎?
- 23. 如何使用Objective-C++從Objective-C Cocoa接口調用C++方法
- 24. 無法在C中調用C++方法#
- 25. 從靜態方法調用非靜態方法Objective C
- 26. 如何從Objective C中的另一種方法調用方法?
- 27. objective-c:函數/方法重載?
- 28. Objective-C函數和Objective-C方法有什麼區別?
- 29. Objective-C無法在Game Center中調用函數
- 30. 使用Swift調用Objective-C方法3
你能發佈一些代碼?否則就不可能提供幫助。 – 2008-11-20 10:34:52
我第二次請求。一些簡單的代碼將非常有幫助。例如。只是C函數的一些代碼顯示了你實際訪問obj-c對象的方式,以及如何調用它,這可能對你非常有幫助 – Mecki 2008-11-20 10:54:55