После прочтения комментария на другой ответ
мне нужно получить значение USEREMAIL в нескольких классах, так что его неправильно передавать данные в каждый класс
Это похоже на то, что вы после одноэлементного класса. Так что попробуйте что-то вроде этого
AuthObject.h
@interface AuthObject : NSObject
@property (nonatomic, strong) NSString *userEMail;
+ (AuthController*)authInstance;
@end
AuthObject.м
#import "AuthObject.h"
@implementation AuthObject
@synthesize userEMail = _userEMail;
static AuthObject *authObjectSharedInstance = nil;
+ (AuthObject *)authInstance
{
static dispatch_once_t instanceToken;
dispatch_once(&instanceToken, ^{
authObjectSharedInstance = [[AuthObject alloc] init];
});
return authObjectSharedInstance;
}
@end
затем в другом методе в другом классе до тех пор, как вы импортировали AuthObject.h
где-то можно сделать
- (void)someMethodIMadeUpInClass1
{
AuthObject *authObj = [AuthObject authInstance];
[authObj setUserEMail:@"[email protected]"];
}
тогда в совершенно другом классе вы можете сделать
- (void)someMethodIMadeUpInClass2
{
AuthObject *authObj = [AuthObject authInstance];
NSLog(@"my email : %@", [authObj userEMail];
}
В теории, если вы создаете одноэлементный класс и не проходите через sharedInstance
(authInstance
здесь), тогда этот код нарушается. Попытка скрыть эту разорванность просто вызовет боль позже. Вот почему я выбрал одноэлементный класс, используя NSUserDefaults
.
Где вы его устанавливаете? Вы вызываете '[ac setUserEMail: @" [email protected]]; ' – Popeye
Синтезировать userEmail в файле first class.m – user1673099
В Class1.m im, устанавливая его. Протестировало его значение прямо там с NSLog и его ок. – user2851844