Objective C에서 C를 링크하여 사용하는 방법
Objective C는 하이브리드 언어입니다. 한마디로 잡종 언어입니다. 자바와 같이 가비지 컬레션이 있어서 delete를 사용할 필요가 없다고 주장하는 언어입니다.
그러나 많은 라이브러리를 두고 Objective C로 전향할 때 피해가 막심하고 C의 개발 속도 문제로 인해서 연동할 필요성이 대두됩니다.
1. 확장자가 *.c 인 파일을 *.m으로 변경합니다.
2. #import 라는 키워드를 사용합니다.
예
#import "teestcode.h"
static void hello (int x, int y)
{
// 마구 c를 써주마
}
@implementation testcode
static void hello_c_world(int x, char *p)
{
// 마구 c를 써주마
}
- (id)myMethod
{
}
@end
static id funcC(id obj)
{
//
}
여튼 쓸 수 있습니다. 기타 언어도 연결 가능합니다.
이런 예제도 있습니다.
s Marc points out, you're probably using a reference to the OBJC object that is un-initialised outside the objective-c scope.
Here's a working sample of C code calling an ObjC object's method:
#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];
}
--------------------------
궁금한 사항은..
http://www.faqs.org/faqs/computer-lang/Objective-C/faq/
에 물어보세요
testcode~
|