在通用應用程序中實現類的正確方法是什麼?iOS通用應用程序類結構
我目前有兩個xib(每個設備一個),每個xib調用相同的類,並在該類內部有一個條件語句,用於檢查當前正在運行該應用程序的設備類型,併爲每個設備執行相應的代碼。
我很困惑,如果這是正確的結構,或者我必須創建一個基類,然後擴展該類的每個設備,只覆蓋每個對應的設備?
在通用應用程序中實現類的正確方法是什麼?iOS通用應用程序類結構
我目前有兩個xib(每個設備一個),每個xib調用相同的類,並在該類內部有一個條件語句,用於檢查當前正在運行該應用程序的設備類型,併爲每個設備執行相應的代碼。
我很困惑,如果這是正確的結構,或者我必須創建一個基類,然後擴展該類的每個設備,只覆蓋每個對應的設備?
我個人儘量在我可以使用的地方重複使用代碼,但許多開發人員喜歡爲iPhone和iPad版本創建單獨的類以避免「意大利麪代碼」。它完全取決於你正在編寫的應用程序的複雜性。如果它是一個簡單的應用程序,那麼我認爲沒有理由提供邏輯來測試設備,並根據該設備執行不同的代碼,併爲每個設備創建多個類。儘管爲每個單元測試創建單獨的代碼有很多好處,或者可以輕鬆更新iPad特定的代碼,反之亦然。我已經看到成功的開發人員使用這兩種方法,並且如果您正確地使用文檔和編譯標記標記代碼,這兩種方法都可以很好地工作
Here是使用DIFF類
你可以隨時創建一個簡單的類,返回的設備類型,以及如果輸入了完整的測試困擾人們的一個例子。如果您想測試諸如iPod和其他設備類型的東西,這很方便。大多數情況下,這是我使用的方法,除非項目非常大,並且課程開始混亂。
// TestDevice.h
@interface TestDevice : NSObject
+ (BOOL)isIpad;
@end
// TestDevice.m
#import "TestDevice.h"
@implementation TestDevice
+ (BOOL)isIpad
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
return YES;
return NO;
}
@end
然後,只需將它添加到您的.PCH,你可以在應用程序調用的任何地方重新使用它......
if ([TestDevice isIpad]) {
// Something
}
else {
// Something else
}