我在Objective-C中开发。
我创建了两个文件调用 AAA.m
和 BBB.m
。
1。在 AAA.m
中,我在 {{1}中调用了一个函数 readValue
<}> 并发送 BBB.m
。
2。在 NSString
中,我从 {{1}收到 BBB.m
} ,然后在 NSString
中调用 AAA.m
函数。
3。当 {{1}调用 updateState
AAA.m
时} 即可。它将值从 updateState
设置为 AAA.m
。
代码如下:
BBB.m
BBB.m
UISlider
AAA.m
我已经收到 @property (strong,nonatomic)BBB *bbb;
- (void)viewDidLoad
{
[self.bbb initAAA];
[self.WhiteSlider setMinimumValue:0];
[self.WhiteSlider setMaximumValue:100];
}
- (IBAction)SyncLEDState:(id)sender {
[self.bbb readValue:@"50"];
}
- (void)updateState:(NSString*)state
{
NSlog(@"state = %@",state);
self.WhiteSlider.value = [state intValue];;
}
函数中的值,该函数由 BBB.m
调用。
但我无法在 @property (strong,nonatomic)AAA *aaa;
-(void)initAAA
{
self.aaa = [[AAA alloc] init];
}
-(void)readValue:(NSString*)string
{
NSlog(@"string = %@",string);
[self.aaa updateState:string];
}
中更新 updateState
或 BBB.m
的值。
我确信 UILabel
没有问题。
UISlider
由于 AAA.m
而创建新的 UISlider
,所以它没有更改原始 BBB.m
的 AAA.m
的值?
我错过了什么吗?提前谢谢。
答案 0 :(得分:2)
BBB
在AAA
中创建自己的self.aaa
私有版本,与aaa
调用中的readValue:
不同。因此,您(可能)更新了未显示的AAA
的状态。
或者,您可以修改当前版本。如下:
AAA.m
中的:
self.bbb = [[BBB alloc] initWithAAA: self];
BBB.m
中的:
- (id)initWithAAA: (AAA *)aaa {
self = [super init];
if (self)
self.aaa = aaa;
return self;
}
这样可以确保AAA
和BBB
同时引用AAA
的同一个实例。