使用访问权限的问题

时间:2012-07-13 06:32:03

标签: objective-c ios cocoa-touch

我有两个视图控制器和笔尖。我用一个切换开关填充了一个视图控制器,并在其头文件中声明了这一点:

@public UISwitch *toggleSwitch;

并将其作为这样的属性公开:

@property (nonatomic,retain) IBOutlet UISwitch *toggleSwitch;

我还将交换机与toggleSwitch插座相连。现在我想在我的其他视图控制器中使用这个toggleSwitch字段,我该怎么做?在字段声明中没有使用@public吗?请帮忙。谢谢。

2 个答案:

答案 0 :(得分:0)

完全没问题。只需使用这样的开关:

vcWhereYouDeclaredTheSwitch.toggleSwitch.on = YES;

BOOL test = [vcWhereYouDeclaredTheSwitch.toggleSwitch isOn];

在其他视图控制器中。

以下是关于propertyys的一般想法:

  • 内存管理:在幕后,它将创建一个setter,用正确的内存管理创建变量。它会为您节省一些麻烦,因为您可以轻松查看内存管理的完成情况(strong / weakretain / copy / { {1}})。

  • 来自其他课程的辅助功能:如果您在.h中声明assign而在.m中声明@property,则您的ivar将是公共可读和可写的。您可以使用privat类扩展来阻止此操作。您甚至可以声明@synthesize public @property并通过privat类扩展在内部readonly声明它们。 例如:私人财产

readwrite
  • 自定义getter和setter :如果您愿意,您仍然可以编写自定义getter和setter,您甚至可以只编写一个getter或setter并让另一个自动 // [In the implementation file] @interface MyClass () @property (nonatomic, retain) NSMutableArray* someData; // private!! @end @implementation MyClass @synthesize someData @end 。你可以将自定义逻辑编写到这样的getter和setter中,例如您可以在@synthesize更改后重新加载tableview。

  • 自动键值观察(KVO)兼容:如果您使用或计划使用KVO,您只需通过声明属性即可免费获得。没有其他事情需要做!

  • 如果你需要你iVar公开,写一个@property比写一个iVar的getter和setter更简单

  • 使用@property,您无需在iVar中声明(在iOS和64位Mac Os X应用程序中)。您可以通过@property

  • 来完成
@synthesize

答案 1 :(得分:0)

你已经取得了UISwitch的财产。因此,您可以使用viewcontroller对象在任何地方使用它。

假设您想在当前使用它的视图中使用它

self.toggleSwitch

//或

viewControllerObject.toggleSwitch