从其他视图合成属性?

时间:2014-11-04 19:02:04

标签: ios objective-c

这个问题更像是一个摘要,可以理解多个视图的交互方式。

采取以下方案 -

view1.h

- > #import "view2.h"

- > @property (strong, nonatomic) NSString *variableA;

view1.m

- > @synthesize variableA, variableB

view2.h

- > #import "view1.h"

- > @property (strong, nonatomic) NSString *variableB;

view2.m

- > @synthesize variableA, variableB

为什么这不起作用?我是否还需要将其他视图标题导入到实现文件中?是否有不同的方法来实现同一目标?

1 个答案:

答案 0 :(得分:0)

我认为您误解了@synthesize的用法。实际上,它现在唯一的目的是允许通过指定的名称本地访问该物业的ivar。例如:

@interface View1 : UIView
@property (strong, nonatomic) NSString *variableA;
@end

@implementation View1
@synthesize variableA;
- (void)someMethod {
  NSLog(@"%@", variableA);
}
@end

与否@synthesize比较:

@interface View2 : UIView
@property (strong, nonatomic) NSString *variableB;
@end

@implementation View2
- (void)someMethod {
  NSLog(@"%@", _variableA);
  NSLog(@"%@", self.variableA);
}
@end

如果要从其他类或子类访问属性,请使用选择器或点表示法。

@interface View3 : View1
- (void)anotherMethod:(View2 *)view1;
@end

@implementation View3
- (void)anotherMethod:(View2 *)view2 {
  NSLog(@"%@", self.variableA);
  NSLog(@"%@", [self variableA]);
  NSLog(@"%@", view2.variableB);
  NSLog(@"%@", [view2 variableB]);
}
@end