Deklaruje statyczne zmienne członkowskie, takie jak Java w Objective-C
Jak mogę utworzyć klasę Objective-C ze zmiennymi poziomu klasy, takimi jak ta klasa Java?
public class test
{
public static final String tableName = "asdfas";
public static final String id_Column = "_id";
public static final String Z_ENT_Column = "Z_ENT";
}
Chcę uzyskać do nich dostęp bez tworzenia instancji, jak:
String abc = test.tableName;
6 answers
Wygląda na to, że chcesz utworzyć stałe(ponieważ używasz final
w swoim pytaniu). W Objective-C możesz do tego użyć extern
.
Zrób coś takiego:
1) Utwórz nową klasę Objective-C o nazwie stałe.
2) w nagłówku (.H) plik:
extern const NSString *SERVICE_URL;
3) w realizacji (.m) plik:
NSString *SERVICE_URL = @"http://something/services";
4) dodaj #import "Constants.h"
do dowolnej klasy, w której chcesz jej użyć
5) dostęp bezpośrednio jako NSString *url = SERVICE_URL;
Jeśli nie chcesz tworzyć stałe i po prostu chcesz użyć static
w Objective-C, niestety możesz użyć tylko static
w implementacji (.m) akta. I mogą być dostępne bezpośrednio bez prefiksu nazwy klasy.
Na przykład:
static NSString *url = @"something";
Mam nadzieję, że to pomoże.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-25 07:50:57
Spróbuj....
static NSString *CellIdentifier = @"reuseStaticIdentifier";
Możesz uzyskać dostęp do wartości bezpośredniej za pomocą właściwości syntezy
możesz też użyć NSUserDefaults do przechowywania i pobierania wartości
Opis
@interface MyClass : NSObject
+(NSString *)myFullName;
@end
Realizacja:
#import "MyClass.h"
@implementation MyClass
static NSString *fullName = @"Hello World";
+(NSString *)myFullName{
return fullName;
}
@end
Użycie:
#import "MyClass.h"
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
NSLog(@"%@",[MyClass myFullName]); //no instance but you are getting the value.
}
@end
Mam nadzieję, że pomogłem.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-11 08:28:38
Musisz użyć metody klasowej, aby uzyskać dostęp do wszystkiego, co można wywołać bez tworzenia instancji .
@interface MyClass : NSObject
+(NSString *)myFullName;
@end
Realizacja:
#import "MyClass.h"
@implementation MyClass
static NSString *fullName=@"anoop vaidya";
+(NSString *)myFullName;{
return fullName;
}
@end
Jak używać:
#import "MyClass.h"
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
NSLog(@"%@",[MyClass myFullName]); //no instance but you are getting the value.
}
@end
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-02 05:36:39
Objective-C nie ma zmiennych klasy
Zalecałbym umieszczenie statycznego Nsstringa w pliku implementacji twojej klasy i podanie metod klasowych, aby uzyskać do niego dostęp
@implementation MyClass
static NSString* str;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-02 05:30:39
Można zrobić tak:
@interface Test
{
static NSString *tableName;
}
+(NSString *) getTableName;
@end
@implementation Test
+ (NSString *)getTableName
{
return tableName;
}
@end
A potem go ściągasz:
NSString *name = [Test getTableName];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-02 05:35:11
Myślę, że najlepszym i bardziej używanym sposobem jest użycie enum takich jak
enum{
GSPAYMENT_METHOD_CARD = 1,
GSPAYMENT_METHOD_CASH = 2,
GSPAYMENT_METHOD_VOID = 3
};
typedef NSUInteger PaymentMethodType;
Tuż przed @interface GSPaymentMethod
W ten sposób możesz używać tych stałych w dowolnym miejscu, włączając plik .h
Na przykład
[self newPayment:GSPAYMENT_METHOD_CASH]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-13 15:23:59