完全没有问题。只需像这样使用开关:
vcWhereYouDeclaredTheSwitch.toggleSwitch.on = YES;
或者
BOOL test = [vcWhereYouDeclaredTheSwitch.toggleSwitch isOn];
在您的其他视图控制器中。
以下是关于属性的一些一般性想法:
内存管理:在幕后它将创建一个设置器,该设置器创建具有正确 内存管理的变量。它将为您省去一些麻烦,因为您可以很容易地看到内存管理是如何完成的(strong
/weak
和retain
/ copy
/ assign
)。
其他类的可访问性:如果你@property
在 .h 中声明你的@synthesize
,在 .m 中声明你的 ivar 将是公共可读和可写的。您可以使用 privat 类扩展来防止这种情况。您甚至可以声明一个@property
公共并通过私有类扩展readonly
在内部声明它们。readwrite
例如:私有财产
// [In the implementation file]
@interface MyClass ()
@property (nonatomic, retain) NSMutableArray* someData; // private!!
@end
@implementation MyClass @synthesize someData
@end
自定义 getter 和 setter:如果您愿意,您仍然可以编写自定义 getter 和 setter,您甚至可以只编写一个 getter 或 setter 并让另一个自动生成@synthesize
。您可以将自定义逻辑写入这样的 getter 和 setter,例如,您可以在 a@property
更改后重新加载 tableview。
自动键值观察 (KVO) 兼容:如果您使用或计划使用 KVO,您只需声明属性即可基本上免费获得它。没有其他事情需要做!
如果您需要公开 iVar,那么编写一个@property
比为 iVar 编写 getter 和 setter更简单
使用 a@property
您无需在 iVar 中声明(在 iOS 和 64 位 Mac Os X 应用程序中)。您可以通过以下方式进行@synthesize
:
@synthesize myiVar = _myIvar;