У меня есть очень простой код Java, как этот. Я понятия не имею, как это сделать в Objective C. Особенно, статическая часть, которая вызывает метод getLocalAddress () и присваивает его статической строковой переменной. Я знаю, как установить статическую переменную и статический метод в Objective, но я не знаю, как реализовать эту статическую {} часть в Java.
Заранее спасибо ...
public class Address {
public static String localIpAddress;
static {
localIpAddress = getLocalIpAddress();
}
public Address() {
}
static String getLocalIpAddress() {
//do something to get local ip address
}
}
Я добавил это в свой .h файл
#import <Foundation/Foundation.h>
extern NSString *localIpAddress;
@class WifiAddrss;
@interface Address : NSObject {
}
@end
И мой .m файл выглядит как
#import "Address.h"
#import "WifiAddress.h"
@implementation Address
+(void)initialize{
if(self == [Address class]){
localIpAddress = [self getLocalIpAddress];
}
}
+(NSString *)getLocalIpAddress{
return address here
}
-(id)init{
self = [super init];
if (self == nil){
NSLog(@"init error");
}
return self;
}
@end
И теперь я получаю ошибку компоновки, и она жалуется на часть "extern NSString * localIpAddress". Если я изменяю extern на static, он работает нормально. Но я хотел сделать так, чтобы область действия переменной localIpAddress была помечена как grobal. Поскольку, если я поставлю «static» перед переменной в Objective-C, то эта переменная будет видна только в классе. Но на этот раз я хочу сделать это как переменную. Поэтому мой вопрос заключается в том, как сделать переменную localIpAddress как переменную типа grobal, которая инициализируется один раз при первом создании класса Address. Заранее спасибо ...