2014-05-20 76 views
4

dismissModalViewControllerAnimated警告已經過時:首先在iOS 6.0禁止`deprecated`在Xcode

  • 我的部署目標是6.1和Xcode是5.1棄用。
  • 我想刪除6.1模擬器的這個警告。那可能嗎?
  • 如果我將通過選擇在ios 5.1中運行,則不會發出警告。
+0

可能的複製 - - > http://stackoverflow.com/questions/12445190/dismissmodalviewcontrolleranimated-deprecated – Maverick

+0

可能重複[抑制Xcode中不推薦使用的警告](http://stackoverflow.com/questions/2622017/suppressing-deprecated-warnings-in- xcode) – mylogon

回答

22

如果我是正確的,你只是想壓制警告。

#pragma GCC diagnostic ignored "-Wdeprecated-declarations" 

這只是爲了壓制警告。在發佈版本中,您不應該使用任何棄用的函數。

編輯:爲了抑制調用警告特定代碼,使用:

#pragma clang diagnostic push 
#pragma clang diagnostic ignored "-Wdeprecated-declarations" 

    [self dismissModalViewControllerAnimated:YES]; 

#pragma clang diagnostic pop 
+0

更好地取代不推薦使用新代碼代替抑制代碼,只需將該行替換爲:[self dismissViewControllerAnimated:NO completion:nil] ;.這是更好的選擇。 –

+0

感謝您的回答。是否有解決方案來隱藏特定警告的警告。我不想壓制VC中的所有警告。 – Jayaprada

+0

查看更新的代碼。 另外,除非您的部署目標<5.0,建議使用更新的方法。他們可以從iOS 5.x – n00bProgrammer

1

使用

[self presentViewController:loginController animated:YES completion:nil]; 

[self presentModalViewController:loginController animated:YES]; 

[self dismissViewControllerAnimated:NO completion:nil]; 
0

因此使用下面的代碼它的作品完美

[self dismissViewControllerAnimated:YES completion:nil];

測試和工作正常。

:)

2

@ n00bProgrammer謝謝您的回答。

對於那些仍然擁有支持iOS早期版本的代碼的人來說,我處理舊代碼的方式是在版本宏測試中包裝較舊的代碼,並抑制導致的編譯器警告。

注意,有時棄用的項目生成隱式轉換警告需要使用「-Wconversion」被抑制。

if (SYSTEM_VERSION_LESS_THAN(@"6.0")) { 
     #pragma clang diagnostic push 
     #pragma clang diagnostic ignored "-Wdeprecated-declarations" 
     #pragma clang diagnostic ignored "-Wconversion" 
     [controlCenter.label setLineBreakMode:UILineBreakModeWordWrap]; 
     #pragma clang diagnostic pop 
    } else { 
     [controlCenter.label setLineBreakMode:NSLineBreakByWordWrapping]; 
    } 

你可以在這裏找到的版本檢查對老年人Objective-C代碼:SYSTEM_VERSION_LESS_THAN()

你可以找到的版本檢查爲新雨燕和Objective-C代碼在這裏:Swift and Objective-C version check past iOS 8