gpt4 book ai didi

Objective-C 模型- View 通信

转载 作者:行者123 更新时间:2023-12-02 05:01:11 24 4
gpt4 key购买 nike

我有一个类,它的实例是在加载 UIViewController 时创建的。我需要此类的实例能够在某些事件发生时更新 ViewController。这就是我完成此任务的方式:

AViewController.h

@property (weak, nonatomic) IBOutlet UIProgressView *progress;
@Property (strong, nonatomic) ClassB *classB
-(void)incrementProgressBar: (NSNumber *)currentProgress;

AViewController.m

-(void)viewDidLoad
{
_classB = [ClassB alloc]initWithNonReleventVariable:variable];
[_classB setInstanceViewController:self]
}
-(void)incrementProgressBaar: (NSNumber *)currentProgress;
{
[_progressBar setProgress:[currentProgrsss floatValue] animated:YES];
}

B类.h

@property (strong, nonatomic)AViewController *avc;
@property (nonatomic) double progress;

B类.m

-(void)incrementExerciseProgress
{
//do some calculations here
[self.avc incremtProgressBar:[NSNumber numberWithDouble:_progress]];
}

我从其他人那里继承了这段代码,它工作正常。所以我的问题是:这是实现此目标的“正确”方法吗?我想知道这是否是最佳做法?或者如果不是,我可以做些什么来修复它。我有一些时间在这个项目上,所以我想确保我尽可能正确地完成它。谢谢。

最佳答案

这样,在两个不同层的两个类之间引入了高耦合。您可以创建一个 ClassBDelegate 协议(protocol)。

@protocol ClassBDelegate <NSObject>
- (void) classB: (ClassB *)class hasIncrementedProgressTo:(NSNumnber *)prgoress;
@end

使 AViewController 符合它。这样,ClassB 就可以忽略 Controller 层中的任何更改。 ClassB 的实例只需要将原始数据的更改通知其委托(delegate),委托(delegate)的工作即 View Controller 使用 View 显示该更改。

关于Objective-C 模型- View 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17067907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com