2012-06-08 4 views
4

나는 그런 MonoTouch에서 다음 목표 - C로 코드를 사용하려고 해요 :MonoTouch NSClassFromString

if (NSClassFromString(@"ADBannerView"))

C#에서 동등한은 무엇입니까?

기본적으로 iAd를 사용하고 싶지만, OS의 모든 버전에서 사용할 수 없으므로 ADBannerViewADInterstitialAd의 존재 여부를 확인해야합니다. (그리고 나는 차라리 iOS 버전 검사보다 기능 검사를하고 싶다.)

나는 이것이 다른 상황에서도 도움이 될 수 있다고 생각한다.

답변

2

최근의 MonoTouch는 항상 ADBannerView을 제공하므로 C#에 해당하는 Type.GetType을 쿼리 할 수 ​​없습니다.

일반적으로 버전 확인은 기능을 확인하는 가장 좋은 방법입니다. 예 :

bool available = UIDevice.CurrentDevice.CheckSystemVersion (4, 0); 

(ADBannerView이 아이폰 OS에 추가 된 경우 인 4.0) 모든 iOS 4.0 이상 버전의 사실를 반환합니다.

가능한 대안 (모든 경우에 작동하지 않을 수도 있음)은 인스턴스를 생성하고 처리를 확인하는 것입니다. ObjC는 메시지를 기반으로하므로 init은 null을 반환합니다 (.NET 생성자가 수행 할 수없는 것). 예 : 당신은 아마 최고의 서라운드 using와 위의보기를 폐기하거나 ADBannerView의 정상적인 창조 안에이 통합

bool available = (new ADBannerView().Handle != IntPtr.Zero); 

참고.

UPDATE : 당연히 p는/NSClassFromString에 호출 난 그냥 C#을에서`NSClassFromString`를 호출 할 필요가

+0

p/invoke의 예가 있습니까? 이 작업을 할 수 :'[DllImport (Constants.FrameworkLibrary)] public static extern IntPtr NSClassFromString (string className); ' – jonathanpeppers

+0

나는 그것을 시도하지 않았지만'[DllImport (Constants.FoundationLibrary)]''그렇지 않으면 내가 뭘 하려는지 알 수있다. (wwdc ;-)에 대해 죄송하다. – poupou

+0

끝나면 프로 버전 용 쿠폰 코드를 보내 줄께. – jonathanpeppers

0

이 사람이 질문을하고 대답했습니다.

에 체크 아웃 : : MonoTouch app with iAds runs on simulator, crashes on device

그렇지 않으면 Check for class in an assembly이 할 수있는 당신이 컴파일러 플래그를 필요 것 같습니다. monotouch 질문 태그 정말 도움이 대개 확인 monotouch ADBannerView assembly

문제가 해결되지 않으면 MonoTouch에있는 사람 중 하나

마지막으로 당신은 내가했던 것과 같은 구글 검색을 사용할 수 있습니다.

+0

:-) 정확히 오브젝티브 -c 코드와 동일한 기능을 수행 할 것입니다. 귀하의 솔루션이 정확히 내가 원하는 것은 아닙니다. 저는 맞춤 광고 프레임 워크를 구축 중이며 iAd의 특정 기능을 사용할 수 있는지 알아야합니다. 예를 들어, 'ADInterstitialAd'는 iOS 4.2 또는 뭔가 (나를 인용하지 마십시오)에서 소개되었으므로이를 감지하고 다른 제공 업체의 백필 광고를 제공해야합니다. MonoTouch 클래스가 항상 존재하기 때문에 어셈블리의 클래스가 항상 참인지 확인하십시오. – jonathanpeppers