2013-04-18 10 views

risposta

9

Si potrebbe farlo utilizzando preprocessori:

#define API_URL @"http://api.service.com" 
#define SOME_VALUE (7) 

definisce Accesso sarebbe semplice: [object do:API_URL];

Oppure si potrebbe usare le costanti

NSString * const apiURL = @"http://api.service.com"; 
NSNumber * const someValue = @7; 

Accesso const sarebbe come l'accesso ai variabili, quindi la stringa sarebbe solo una semplice chiamata. Il NSNumber è un wrapper per oggetto primitive così avresti bisogno di accedervi come: someValue.intValue

+0

Vale la pena notare che, come questione di stile (e per evitare errori di insinuazione), i #define dovrebbero essere, ad esempio, '#define SOME_VALUE (7)'. Sconsiglio vivamente anche a questa pratica per le applicazioni non incorporate, dato che non è controllata a caratteri e il sovraccarico di memoria delle variabili statiche in realtà non è un grosso problema per iOS/OS X. – sapi

+0

Buoni punti. Volevo solo buttare fuori alcune opzioni per lui. modificato. –

+1

Per chiunque si imbatta in questo in futuro. Le costanti sono sicuramente il metodo preferito. Le costanti consentono al compilatore di fare alcune ottimizzazioni per te mentre definisce semplicemente migliorare la tua esperienza con codice completamente automatico automatico. –

0

È possibile creare un Singleton con tutte le costanti necessarie Here is a sample

Se non si desidera creare la classe che è possibile utilizzare variabili private statici e getter statici.

@interface 

+(NSString*) getValue; 

@end 


@implementation 

static NSString *_value = @"...."; 

+(NSString*) getValue { 
    return _value; 
} 

@end 
+0

Non ho bisogno di iniziare la classe - Voglio solo accedere alle proprietà in modo statico. – hsz

+0

Guarda il mio aggiornamento –

13

risposta per la tua domanda è extern parola chiave. Te lo spiegherò usando un esempio. Aggiungere classi Objective C il progetto e assegnare loro un nome comune, ora in COMMON.H

 @interface Common : NSObject 

    extern NSString *SiteApiURL; 

    @end 

Dopo aver definito un'istanza di NSString classe utilizzando la parola chiave extern ciò che devi fare è passare alla classe Common.m e inizializzare il rapporto qualità-NSString (SiteApiURL)

 #import "Common.h" 

    @implementation Common 

    NSString *SiteApiURL = @"http://api.service.com"; 

    @end 

Importa la classe COMMON.H nell'ambito del progetto-Prefix.pch file in questo modo

#import <Availability.h> 

    #ifndef __IPHONE_3_0 
    #warning "This project uses features only available in iOS SDK 3.0 and later." 
    #endif 

    #ifdef __OBJC__ 
     #import <UIKit/UIKit.h> 
     #import <Foundation/Foundation.h> 
     #import "Common.h" 
    #endif 

Tutto fatto, ora è possibile utilizzare l'O bject "SiteApiURL" in qualsiasi punto dell'intero progetto e non è necessario importare alcuna classe ovunque, ad esempio, è possibile utilizzare direttamente questa variabile in qualsiasi punto del progetto.

Problemi correlati