簡體   English   中英

iOS通用應用程序類架構

[英]iOS Universal App Class Architecture

在Universal App中實現類的正確方法是什么?

我目前有兩個xib(每個設備一個),每個xib調用相同的類,在該類中,我有一個條件語句,檢查當前正在運行該應用程序的設備類型,並為每個設備執行相應的代碼。

如果這是正確的結構,我會感到困惑,還是我必須創建一個基類,然后為每個設備擴展該類以僅覆蓋與每個設備相對應的內容?

我親自嘗試重用代碼,但許多開發人員確實喜歡為iPhone和iPad版本創建單獨的類,以避免出現“意大利面條式代碼”。 這完全取決於您正在編寫的應用程序的復雜性。 如果它是一個簡單的應用程序,那么我認為沒有理由只提供邏輯來測試設備並基於該邏輯執行不同的代碼,而不是為每個設備創建多個類。 雖然,為每個代碼創建單獨的代碼有很多好處,例如單元測試或iPad特定代碼的輕松更新,反之亦然。 我已經看到成功的開發人員會同時使用這兩種方法,並且如果您正確記錄文檔和編譯指示標記您的代碼,那么兩者都可以很好地工作。

是使用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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM