我认为我对iOS @property getter和setter感到有点困惑。我试图在我的AppDelegate.h文件中设置另一个类的NSString iVar,以便它可以被项目中的所有类使用?
例如,我正在研究一个在AppDelegate.h中存储iVar NSString * currentUser的iPhone项目。我需要能够通过ViewController.m中的一个方法设置它,然后在第二个ViewController中通过另一个方法获取它吗?
也许Getter和Setter一起是错误的攻击方向?我明白我不想分配init AppDelegate,因为iVar只存在于该对象中,我希望所有类中的所有对象都可以访问它?
请有人指好我。
一切顺利, 达伦
答案 0 :(得分:1)
以下是应用代表的设置。
@interface AppDelegate
{
NSString *__currentUser;
}
@property (monatomic, copy) NSString* currentUser;
@end
@implementation AppDelegate
@synthesize currentUser = __currentUser;
- (void) dealloc
{
[__currentUser release];
[super dealloc];
}
@end
从一个视图控制器,您可以为当前用户设置一个值,并从后续视图控制器获取该值以用于某些恶意目的。
@implementation LoginController
- (void) viewDidLoad
{
...
AppDelegate *bob = [[UIApplication sharedApplication] delegate];
[bob setCurrentUser: @"Jim Kirk"];
...
}
@end
在稍后出现的某个其他视图控制器中,可以访问当前用户的值。
@implementation ProfileViewController
- (void) viewDidLoad
{
...
AppDelegate *bob = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSString * user = [bob currentUser];
// insert nefarious purpose for current user value here
...
}
@end