如何在objective-c中调用其他类的函数?

时间:2015-03-04 06:52:24

标签: ios objective-c

我在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 的值?

我错过了什么吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

BBBAAA中创建自己的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;
}

这样可以确保AAABBB同时引用AAA的同一个实例。