Determiner la version de mac os

GenoseGenose Membre
07:46 modifié dans API AppKit #1
salut,
je cherche une alternative a Gestalt.h de carbon pour connaitre la version mac os sur laqualle mon projet est en action, et en envitant les pipe entre cocoa et une application externe comme uname -v.
je cherche a faire disparaitre carbon de mon appli d'une ffacon simple et elgante en changeant donc juste une ligne de code :

int currentosVersion;
Gestalt(gestaltSystemVersion, &CurrenOsversion); //carbon me donne bien 0x103, soit mac os 10.3

int darwinVersion = floor(NSAppKitVersionNumber); //appKit lui me donne la version de darwin soit 780


seul carbon mevite de coder inutilement des lignes pour savoir la version de mac os actuel.

une solution ?

merci d'avance.

Réponses

  • 07:46 modifié #2
    NSAppKitVersionNumber donne le numéro de version de l'AppKit, pas de Darwin. Sinon 10.3 est un nom commercial, pas un numéro de build.

    Sinon tu n'as qu'à  ajouter cette catégorie (GPL), ça t'évitera les lignes de code "inutiles".

    [Fichier joint supprimé par l'administrateur]
  • GenoseGenose Membre
    07:46 modifié #3
    merci a toi Renaud,

    j'ai pas trouver le super truc qui remplacera carbon, car la il utilise des truc trop restreint ou le code doit connaitre toutes les version de mac os, et c'est bien ce que cherche a eviter, car j'utilise enc e moment un bete if :

    if(OsVersion >= 0x0126)
    [MyApp start:OsVersion];

    et la c'est tout simple si mac os n'est pas a jour, l'appli le fait savoir.

    mais par contre, je vient de voir comment on fait pour obtenir le fameux kCFBundleVersionKey;

    tres interressant.



    je vais continuer a chercher  en attendant une autre solution.
  • mpergandmpergand Membre
    07:46 modifié #4
    Quelques infos glanées deci dela:

    #define NSFoundationVersionNumber10_0 397.4
    #define NSFoundationVersionNumber10_1 425.0
    #define NSFoundationVersionNumber10_2 462.0
    #define NSFoundationVersionNumber10_3 500.0
    #define NSFoundationVersionNumber10_3_2 500.3
    #define NSFoundationVersionNumber10_3_3 500.54
    #define NSFoundationVersionNumber10_3_4 500.56

    AppKit Version Number 10.0 = 577.0
    AppKit Version Number 10.1 = 620.0
    AppKit Version Number 10.2 = 663.0
    AppKit Version Number 10.2.3 = 663.6
    AppKit Version Number 10.3 = 743.0
    Appkit Version Number 10.4 = 824.0


    Runtime Version Check

    There are several ways to check for new features provided by the Cocoa frameworks at runtime. One is to look for a given new class or method dynamically, and not use it if not there. Another is to use the global variable NSAppKitVersionNumber (or, in Foundation, NSFoundationVersionNumber):
    APPKIT_EXTERN double NSAppKitVersionNumber;
    #define NSAppKitVersionNumber10_0 577
    #define NSAppKitVersionNumber10_1 620
    #define NSAppKitVersionNumber10_2 663
    #define NSAppKitVersionNumber10_3 743
    One typical use of this is to floor() the value, and check against the values provided in NSApplication.h:
    if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_0) {
      /* On a 10.0.x or earlier system */
    } else if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_1) {
      /* On a 10.1 - 10.1.x system */
    } else if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_2) {
      /* On a 10.2 - 10.2.x system */
    } else if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_3) {
      /* On a 10.3 - 10.3.x system */
    } else {
      /* Tiger or later system */
    }
    Special cases or situations for version checking are also discussed in the release notes as appropriate. For instance some individual headers may also declare the versions numbers for NSAppKitVersionNumber where some bug fix or functionality is available in a given update, for example:
    #define NSAppKitVersionWithSuchAndSuchBadBugFix 582.1
Connectez-vous ou Inscrivez-vous pour répondre.