2011-07-22 53 views
1

是的,我知道子類化UIWindow是皺眉,但我的子類UIWindow僅用於調試目的(一旦檢測到特定的運動事件,它會截取當前頁面)。子類化UIWindow - 需要預處理器幫助

無論如何,我做了一個叫DEBUG在我的項目的構建設置定製預編譯器標誌,但我有正確得到它加載/功能相關的問題。現在,它沒有截取屏幕截圖,但它正在註冊運動事件的發生。

下面是我在代碼中的AppDelegate中的didFinishLaunchingWithOptions:

#if DEBUG 
    DebugWindow *debugWindow = [[DebugWindow alloc] init]; 
    self.window = debugWindow; //'window' is declared in the AppDelegate's @interface file and synthesized as window=_window in the @implementation file 
#else 
    self.window = _window; 
#endif 

    self.window.rootViewController = self.tabBarController; 
    [self.window makeKeyAndVisible]; 
+0

您是如何在項目的Build Settings中將自定義預編譯器標誌調用爲DEBUG的? –

+0

我去了項目名稱,Build Settings選項卡,點擊,添加Build Setting,並將其命名爲DEBUG。然後我打開它創建的樹,並將'debug'設置爲'YES'並將'release'設置爲'NO'。 – ArtSabintsev

+0

我將發佈截圖和一些我的代碼,以幫助您理解答案。 –

回答

0

下面是如何使用調試標誌

#if DEBUG == 1 
#define CMLog(format, ...) NSLog(@"%s:%@", __PRETTY_FUNCTION__,[NSString stringWithFormat:format, ## __VA_ARGS__]); 
#define MARK CMLog(@"%s", __PRETTY_FUNCTION__); 
#define START_TIMER NSTimeInterval start = [NSDate timeIntervalSinceReferenceDate]; 
#define END_TIMER(msg) NSTimeInterval stop = [NSDate timeIntervalSinceReferenceDate]; CMLog([NSString stringWithFormat:@"%@ Time = %f", msg, stop-start]); 
#else 
#define CMLog(format, ...) 
#define MARK 
#define START_TIMER 
#define END_TIMER(msg) 
#endif 

這裏是截圖

enter image description here

此外,在釋放設置把標記爲0 喜歡這個-DDEBUG = 0

這樣你就可以實現你想達到的目標。讓我知道它是否有幫助。

+0

感謝您的支持!我會在本週末深入研究這個問題,一旦我開始工作,給你答案 - 選中標記。否則,我會回來一個問題或兩個:) – ArtSabintsev

+0

有一個時刻來看看現在。我無法在Xcode 4.0.2或4.2中找到您正在查看的窗口。我在我的目標應用程序中檢查了構建設置。 – ArtSabintsev

+0

你需要在構建設置中設置標誌,它可能在xcode 4中的不同位置。我的是3.2.5,所以在谷歌上搜索它或堆棧溢出,你會發現這個設置需要設置的地方。您可以參考我的答案以獲得更多解釋。 –