2014-05-17 1 views
2

Objective-C에서 런타임에 char * 문자열을 사용하여 블록을 만들려고합니다. 그러나 나는 그것을 할 길을 찾을 수 없습니다.Objecive-C의 문자열에서 런타임에 블록을 만들 수 있습니까?

내가 목표 - C의 동적 특성이 분명히

char *blockString = "^(int a, int b) {return a + b;};"; 
printf("%s\n", blockString); 
int (^addBlock)(int a, int b) = (^)*blockString; 
int result = addBlock(3, 6); 

같은 것을 할 수 있도록 것이라고 생각, 세 번째 줄의 구문은 공정 컴파일러 너무 이상한,하지만 난 당신을 제공합니다 희망 내가 성취하고자하는 것에 대한 생각.

이 가능합니까? .... 사전에 들으

+1

블록 리터럴을 블록으로 구문 분석하고 싶습니다 ... 이것은 잘 끝나지 않을 것입니다. – CodaFi

+0

왜이 문자열을 사용 했습니까? 어디서 구해 줄거야? – newacct

답변

6

제 목표 C는 컴파일 된 언어 해석되지 않습니다.

+2

'performSelector'와'NSSelectorFromString'뿐만 아니라 다양한 Objective-C 런타임 함수와'NSInvocation'을 사용하여 런타임에 동적으로 코드를 실행하는 몇 가지 방법이 있습니다. – rmaddy

+0

Thx @Duncan C. 그 부분을 이해합니다.하지만 런타임에 클래스를 동적으로 만들거나 정의 할 수 있다면 런타임에 블록 (객체의 일종)을 만들 수 있는지 궁금합니다. – eharo2

+1

@ eharo2 차이점은 런타임에 클래스를 동적으로 변경하거나 만들 때 코드를 컴파일하려고하지 않고 기존 컴파일 된 코드에 대한 포인터를 다시 정렬한다는 것입니다. 당신이하려고하는 것은 동적으로 코드를 컴파일하는 것입니다.이 코드는 지원되거나 허용되지 않습니다. –

관련 문제