6
클래스 구성원으로 사용할 때 누군가의 구문을 이해하는 데 도움이되기를 바랍니다. 실제로 잘 작동하고 몇 가지 코드를 가지고 :iOS 4 - 블록을 클래스 멤버로 사용
@class Structure;
typedef void (^StructureDeleteCallback)(Structure *);
@interface StructureListDelegate : NRFCTableDelegate
{
StructureDeleteCallback _structureDeleteCallback;
}
@property (nonatomic, copy) StructureDeleteCallback structureDeleteCallback;
@end
이 작동하지만이 typedef
문의 구문을 이해하고 싶습니다; 실제로 typedef를 사용해야하는지 여부와 관계가 있습니다.
제가 읽은 바에 따르면이 상황에서 typedef
을 사용하면 코드가 훨씬 명확 해 지므로 권장합니다. 그러나 typedef
없이이 작업을 시도 할 때 컴파일 할 수 없었습니다.
typedef [actual type] [new name for type];
같은 :
typedef double CLLocationDegrees;
하지만 내 typedef
문의 구문이 일치하지 않는 타입 정의의 나의 이해는 구문은 기본적으로이었다이었다. 그래서 제 질문은 다음과 같습니다
- 어떻게 내
typedef
문의 구문이 다른typedef
문에서 이렇게 다를 수 있습니다/I 실제로 사용하고 구문은 컴파일러에게 무엇을 의미 하는가? - 을 사용하지 않고 클래스의 구성원으로 블록을 만들 수 있습니까? 자신이 여기에 당신의 라인을 따라 질문을 한 나는
아! 필자는 typedef를 사용하지 않고도 작동시킬 수 없었습니다. 왜냐하면 iVar을 정의하는 구문이 완전히 다르다는 것을 인식하지 못했기 때문입니다. 나는 여전히 [typename] [iVarName]을 가져야한다고 생각했다; – GendoIkari
마지막으로 한 가지를 명확히하기 위해 ... typedef에 있든 아니면 그냥 블록을 선언하든, 기본적으로 블록은 다른 유형보다 선언하기위한 구문이 다릅니다. 컴파일러는^기호를보고 변수 이름이^다음에 오는 것을 알고 int x;와 같은 유형 이름 뒤에? 감사! – GendoIkari
@Gendolkari 당신이있어! :) –