iOS Getter和Setter混淆

时间:2011-04-10 04:37:29

标签: ios ios4

我认为我对iOS @property getter和setter感到有点困惑。我试图在我的AppDelegate.h文件中设置另一个类的NSString iVar,以便它可以被项目中的所有类使用?

例如,我正在研究一个在AppDelegate.h中存储iVar NSString * currentUser的iPhone项目。我需要能够通过ViewController.m中的一个方法设置它,然后在第二个ViewController中通过另一个方法获取它吗?

也许Getter和Setter一起是错误的攻击方向?我明白我不想分配init AppDelegate,因为iVar只存在于该对象中,我希望所有类中的所有对象都可以访问它?

请有人指好我。

一切顺利, 达伦

1 个答案:

答案 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