当前位置: 首页 > news >正文

IOS界面传值-OC

1、页面跳转

由 ViewController 页面跳转至 NextViewController 页面

(1)ViewController

  • ViewController.h
#import <UIKit/UIKit.h>@interface ViewController : UIViewController@end

  • ViewController.m
#import "ViewController.h"
#import "NextViewController.h"@interface ViewController ()@property (nonatomic, strong) UILabel *label;
@property (nonatomic, strong) UIButton *button;@end@implementation ViewController//懒加载 UILabel
-(UILabel *) label{if (_label == nil) {_label = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 200, 50)];_label.backgroundColor = [UIColor blackColor];_label.textColor = [UIColor whiteColor];_label.font = [UIFont systemFontOfSize:20];}return _label;
}//懒加载 UIButton
-(UIButton *) button{if (_button == nil) {_button = [[UIButton alloc]initWithFrame:CGRectMake(100, 200, 200, 50)];_button.backgroundColor = [UIColor redColor];//setTitle:forState: 是 UIButton 的方法,允许你为按钮的不同状态设置不同的标题//为按钮在 普通状态 (UIControlStateNormal) 下设置标题为 "跳转至下个页面"[_button setTitle:@"跳转至下个页面" forState:UIControlStateNormal];//setTitleColor:forState: 是 UIButton 的方法,允许你为不同状态下的按钮标题设置不同的颜色//为按钮在 触摸抬起 (UIControlEventTouchUpInside) 事件时,设置标题颜色为白色 ([UIColor whiteColor])[_button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];//点击事件//addTarget:action:forControlEvents://target: 触发事件时的目标对象。通常是 self,即当前类的实例//action: 事件触发时调用的方法的 选择器,通过 @selector 来指定方法//forControlEvents: 指定触发事件的类型//UIControlEventTouchUpInside 按钮的 触摸抬起 事件[_button addTarget:self action:@selector(zlzButtonClick) forControlEvents:UIControlEventTouchUpInside];}return _button;
}//按钮点击事件
-(void)zlzButtonClick{NextViewController *nextVC = [[NextViewController alloc]init];//NextViewController 需要全屏展示nextVC.modalPresentationStyle = UIModalPresentationFullScreen;//presentViewController:animated:completion://viewControllerToPresent: 需要展示的视图控制器//animated: 是否使用动画过渡//completion: 动画完成后的回调,可以是 nil[self presentViewController:nextVC animated:YES completion:nil];
}/**•    viewDidLoad:视图加载后,初始化视图。•    viewWillAppear::视图即将显示,准备更新 UI。•    viewDidAppear::视图已显示,启动交互或动画。•    viewWillDisappear::视图即将隐藏,保存数据。•    viewDidDisappear::视图已隐藏,释放资源或暂停任务。**///视图加载
- (void)viewDidLoad {[super viewDidLoad];self.view.backgroundColor = [UIColor greenColor];NSLog(@"First viewDidLoad");//添加控件至根View[self.view addSubview:self.label];[self.view addSubview:self.button];
}-(void)viewWillAppear:(BOOL)animated{[super viewWillAppear:animated];NSLog(@"------First viewWillAppear");
}- (void)viewWillLayoutSubviews{[super viewWillLayoutSubviews];NSLog(@"------First viewWillLayoutSubviews");
}- (void)viewDidLayoutSubviews{[super viewDidLayoutSubviews];NSLog(@"------First viewDidLayoutSubviews");
}- (void)viewDidAppear:(BOOL)animated{[super viewDidAppear:animated];NSLog(@"------First viewDidAppear");
}- (void)viewWillDisappear:(BOOL)animated{[super viewWillDisappear:animated];NSLog(@"------First viewWillDisappear");
}- (void)viewDidDisappear:(BOOL)animated{NSLog(@"------First viewDidDisappear");
}@end

(2)NextViewController

  • NextViewController.h
#import <UIKit/UIKit.h>NS_ASSUME_NONNULL_BEGIN@interface NextViewController : UIViewController@endNS_ASSUME_NONNULL_END
  • NextViewController.m

#import "NextViewController.h"@interface NextViewController ()@property (strong, nonatomic) UITextField *textFiled;
@property (strong, nonatomic) UIButton *button;@end@implementation NextViewController-(UITextField *)textFiled{if (_textFiled == nil) {_textFiled = [[UITextField alloc]initWithFrame:CGRectMake(100, 300, 200, 50)];_textFiled.textColor = [UIColor blackColor];_textFiled.borderStyle = UITextBorderStyleLine;}return _textFiled;
}-(UIButton *) button{if (_button == nil) {_button = [[UIButton alloc]initWithFrame:CGRectMake(100, 400, 200, 50)];_button.backgroundColor = [UIColor redColor];[_button setTitle:@"返回上一个页面" forState:UIControlStateNormal];[_button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];//点击事件[_button addTarget:self action:@selector(zlzBackClick) forControlEvents:UIControlEventTouchUpInside];}return _button;
}-(void)zlzBackClick{// dismissViewControllerAnimated:animated:completion://用来 关闭当前视图控制器 的方法,通常用于关闭通过 presentViewController:animated:completion: 模态展示的视图控制器//completion:nil:表示关闭完成后执行的回调[self dismissViewControllerAnimated:YES completion:nil];
}- (void)viewDidLoad {[super viewDidLoad];NSLog(@"------Second viewDidLoad");self.view.backgroundColor = [UIColor yellowColor];[self.view addSubview:self.textFiled];[self.view addSubview:self.button];
}- (void)viewWillAppear:(BOOL)animated{[super viewWillAppear:animated];NSLog(@"------Second viewWillAppear");
}- (void)viewWillLayoutSubviews{[super viewWillLayoutSubviews];NSLog(@"------Second viewWillLayoutSubviews");
}- (void)viewDidLayoutSubviews{[super viewDidLayoutSubviews];NSLog(@"------Second viewDidLayoutSubviews");
}- (void)viewDidAppear:(BOOL)animated{[super viewDidAppear:animated];NSLog(@"------Second viewDidAppear");
}- (void)viewWillDisappear:(BOOL)animated{[super viewWillDisappear:animated];NSLog(@"------Second viewWillDisappear");
}- (void)viewDidDisappear:(BOOL)animated{NSLog(@"------Second viewDidDisappear");
}@end

2、界面传值

2.1、属性传值

  • 在 NextViewController.h 添加属性 str
#import <UIKit/UIKit.h>NS_ASSUME_NONNULL_BEGIN@interface NextViewController : UIViewController//属性传值
@property (nonatomic, strong) NSString *str;@endNS_ASSUME_NONNULL_END

  • 在 ViewController.m 的跳转点击事件中 为NextViewController中的属性str 赋值
//按钮点击事件
-(void)zlzButtonClick{NextViewController *nextVC = [[NextViewController alloc]init];//NextViewController 需要全屏展示nextVC.modalPresentationStyle = UIModalPresentationFullScreen;//属性传值---传递nextVC.str = @"属性传值";//presentViewController:animated:completion://viewControllerToPresent: 需要展示的视图控制器//animated: 是否使用动画过渡//completion: 动画完成后的回调,可以是 nil[self presentViewController:nextVC animated:YES completion:nil];
}

  • 在 NextViewController.m 中 textFiled 懒加载时赋值
-(UITextField *)textFiled{if (_textFiled == nil) {_textFiled = [[UITextField alloc]initWithFrame:CGRectMake(100, 300, 200, 50)];_textFiled.textColor = [UIColor blackColor];_textFiled.borderStyle = UITextBorderStyleLine;//属性传值---接收并显示_textFiled.text = self.str;}return _textFiled;
}

  • 效果

2.2、单例传值

(1)创建单例

  • DefaultInstance.h

#import <Foundation/Foundation.h>NS_ASSUME_NONNULL_BEGIN@interface DefaultInstance : NSObject+(instancetype)getInstance;@property (nonatomic, strong) NSString *instanceStr;@endNS_ASSUME_NONNULL_END

  • DefaultInstance.m

#import "DefaultInstance.h"@implementation DefaultInstance//类方法---创建单例对象
+(instancetype)getInstance{//首次创建会 将 sharedVC 赋值为 nil,然后创建一个对象//非首次都会直接返回上次的值static DefaultInstance *instance = nil;if (instance == nil) {instance = [[DefaultInstance alloc]init];}return instance;
}@end

(2)正向传值

  • 在 ViewController.m 的跳转点击事件,为单例的属性值赋值
//按钮点击事件
-(void)zlzButtonClick{NextViewController *nextVC = [[NextViewController alloc]init];//NextViewController 需要全屏展示nextVC.modalPresentationStyle = UIModalPresentationFullScreen;//单例传值---正向传递[DefaultInstance getInstance].instanceStr = @"单例传值";//presentViewController:animated:completion://viewControllerToPresent: 需要展示的视图控制器//animated: 是否使用动画过渡//completion: 动画完成后的回调,可以是 nil[self presentViewController:nextVC animated:YES completion:nil];
}

  • 在 NextViewController.m 的 textFiled懒加载时赋值
-(UITextField *)textFiled{if (_textFiled == nil) {_textFiled = [[UITextField alloc]initWithFrame:CGRectMake(100, 300, 200, 50)];_textFiled.textColor = [UIColor blackColor];_textFiled.borderStyle = UITextBorderStyleLine;//单例传值---接收并显示_textFiled.text = [DefaultInstance getInstance].instanceStr;}return _textFiled;
}

  • 效果

(3)反向传值

  • 在 NextViewController.m 的返回点击事件中,为单例中的属性赋值
-(void)zlzBackClick{//单例传值---反向传递NSLog(@"单例传值---反向传递: %@",self.textFiled.text);[DefaultInstance getInstance].instanceStr = self.textFiled.text;// dismissViewControllerAnimated:animated:completion://用来 关闭当前视图控制器 的方法,通常用于关闭通过 presentViewController:animated:completion: 模态展示的视图控制器//completion:nil:表示关闭完成后执行的回调[self dismissViewControllerAnimated:YES completion:nil];
}

  • 在 ViewController.m 的 viewWillAppear() 方法中,获取单例属性值并展示
-(void)viewWillAppear:(BOOL)animated{[super viewWillAppear:animated];NSLog(@"------First viewWillAppear");//单例传值---反向接收并展示NSLog(@"单例传值---反向接收并展示:%@", [DefaultInstance getInstance].instanceStr);self.label.text = [DefaultInstance getInstance].instanceStr;
}

  • 效果

2.3、NSUserDefaults传值

NSUserDefaults传值与单例传值类似,区别是单例传值是在内存中创建单例,而NSUserDefaults 则是在磁盘文件中的。

(1)正向传值

  • 在 ViewController.m 中的跳转点击事件中将值写入文件
//按钮点击事件
-(void)zlzButtonClick{NextViewController *nextVC = [[NextViewController alloc]init];//NextViewController 需要全屏展示nextVC.modalPresentationStyle = UIModalPresentationFullScreen;//NSUserDefaults-正向传值(存入磁盘文件)[[NSUserDefaults standardUserDefaults] setObject:@"NSUserDefaults传值" forKey:@"zlzKey"];//写入[[NSUserDefaults standardUserDefaults] synchronize];//presentViewController:animated:completion://viewControllerToPresent: 需要展示的视图控制器//animated: 是否使用动画过渡//completion: 动画完成后的回调,可以是 nil[self presentViewController:nextVC animated:YES completion:nil];
}

  • 在 NextViewController.m 的 textFiled 懒加载时赋值
-(UITextField *)textFiled{if (_textFiled == nil) {_textFiled = [[UITextField alloc]initWithFrame:CGRectMake(100, 300, 200, 50)];_textFiled.textColor = [UIColor blackColor];_textFiled.borderStyle = UITextBorderStyleLine;//NSUserDefaults传值---接受并显示(从磁盘文件中读取)_textFiled.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"zlzKey"];}return _textFiled;
}

  • 效果

(2)反向传值

  • 在 NextViewController.m 中的返回点击事件中将值写入文件
-(void)zlzBackClick{//NSUserDefaults传值---反向传递NSLog(@"NSUserDefaults传值---反向传递:%@", self.textFiled.text);[[NSUserDefaults standardUserDefaults] setObject:self.textFiled.text forKey:@"zlzBackKey"];[[NSUserDefaults standardUserDefaults] synchronize];// dismissViewControllerAnimated:animated:completion://用来 关闭当前视图控制器 的方法,通常用于关闭通过 presentViewController:animated:completion: 模态展示的视图控制器//completion:nil:表示关闭完成后执行的回调[self dismissViewControllerAnimated:YES completion:nil];
}

  • 在 ViewController.m 中的 viewWillAppear() 方法中获取文件中的值
-(void)viewWillAppear:(BOOL)animated{[super viewWillAppear:animated];NSLog(@"------First viewWillAppear");//NSUserDefaults传值---反向接收并展示NSLog(@"NSUserDefaults---反向接收并展示:%@", [[NSUserDefaults standardUserDefaults] objectForKey:@"zlzBackKey"]);self.label.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"zlzBackKey"];
}

  • 效果

2.4、代理传值

  • 代理传值主要应用于反向传值,即本示例中 NextViewController -> ViewController 传值
  • 委托方:NextViewController
  • 代理方:ViewController

(1)委托方 NextViewController 定义协议

  • 在 NextViewController.h 中创建协议

#import <UIKit/UIKit.h>NS_ASSUME_NONNULL_BEGIN//委托方定义协议
@protocol zlzPassValueDelegate <NSObject>//协议定义一个方法
-(void)passValue:(NSString*)value;@end@interface NextViewController : UIViewController//属性传值
@property (nonatomic, strong) NSString *str;//定义一个持有协议的id指针
//weak是为了防止指针循环引用
@property (weak)id<zlzPassValueDelegate> zlzDelegate;@endNS_ASSUME_NONNULL_END

  • 在 NextViewController.m 中调用协议方法
-(void)zlzBackClick{//代理传值---反向传递[self.zlzDelegate passValue:self.textFiled.text];// dismissViewControllerAnimated:animated:completion://用来 关闭当前视图控制器 的方法,通常用于关闭通过 presentViewController:animated:completion: 模态展示的视图控制器//completion:nil:表示关闭完成后执行的回调[self dismissViewControllerAnimated:YES completion:nil];
}

(2)代理方 ViewController 实现协议方法

  • 在 ViewController.m 中实现协议方法
#import "ViewController.h"
#import "NextViewController.h"@interface ViewController ()<zlzPassValueDelegate>   //遵守协议@property (nonatomic, strong) UILabel *label;
@property (nonatomic, strong) UIButton *button;@end@implementation ViewController//...省略部分代码//代理传值---实现协议方法
-(void)passValue:(NSString *)value{self.label.text = value;
}@end

(3)绑定代理关系

  • 在 ViewController.m 的跳转点击事件中,设置 NextViewController 的代理是自己

//按钮点击事件
-(void)zlzButtonClick{NextViewController *nextVC = [[NextViewController alloc]init];//NextViewController 需要全屏展示nextVC.modalPresentationStyle = UIModalPresentationFullScreen;//代理传值---设置代理关系nextVC.zlzDelegate = self;//presentViewController:animated:completion://viewControllerToPresent: 需要展示的视图控制器//animated: 是否使用动画过渡//completion: 动画完成后的回调,可以是 nil[self presentViewController:nextVC animated:YES completion:nil];
}

2.5、block传值

block传值与代理传值有点类似,也是主要应用于反向传值,但是使用起来比代理传值要简单。

  • 在 NextViewController.h 中定义 block
#import <UIKit/UIKit.h>NS_ASSUME_NONNULL_BEGIN@interface NextViewController : UIViewController//属性传值
@property (nonatomic, strong) NSString *str;// 定义一个 block 进行页面反向传值
//copy属性是为了防止 block 循环引用
//block就是一个属性
//^就是block的标志
@property (copy) void (^zlzBlock)(NSString*);@endNS_ASSUME_NONNULL_END
  • 在 NextViewController.m 中的返回点击事件中调用 block 方法
-(void)zlzBackClick{//block传值---反向传递self.zlzBlock(self.textFiled.text);// dismissViewControllerAnimated:animated:completion://用来 关闭当前视图控制器 的方法,通常用于关闭通过 presentViewController:animated:completion: 模态展示的视图控制器//completion:nil:表示关闭完成后执行的回调[self dismissViewControllerAnimated:YES completion:nil];
}

  • 在 ViewController.m 中的跳转点击事件中实现 属性 block
-(void)zlzButtonClick{NextViewController *nextVC = [[NextViewController alloc]init];//NextViewController 需要全屏展示nextVC.modalPresentationStyle = UIModalPresentationFullScreen;//block传值---实现block-接收来自页面2的值nextVC.zlzBlock = ^(NSString *value){self.label.text = value;};//presentViewController:animated:completion://viewControllerToPresent: 需要展示的视图控制器//animated: 是否使用动画过渡//completion: 动画完成后的回调,可以是 nil[self presentViewController:nextVC animated:YES completion:nil];
}

2.6、通知传值

通知传值更灵活,主要用于跨页面跳转时。

类似于Android中的广播。

(1)接收方 ViewController

  • 在 ViewController.m 的跳转点击事件中,设置通知监听
-(void)zlzButtonClick{NextViewController *nextVC = [[NextViewController alloc]init];//NextViewController 需要全屏展示nextVC.modalPresentationStyle = UIModalPresentationFullScreen;//通知传值---添加监听,等待页面2的传值//addObserver:self 添加监听者为自己//通知的名称zlzNotify//object:nil 表示所有的发送者,只要是名为zlzNotify通知的都监听接收[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dealWithNotify:) name:@"zlzNotify" object:nil];//presentViewController:animated:completion://viewControllerToPresent: 需要展示的视图控制器//animated: 是否使用动画过渡//completion: 动画完成后的回调,可以是 nil[self presentViewController:nextVC animated:YES completion:nil];
}//接收到通知后的处理---参数1:通知
-(void)dealWithNotify:(NSNotification*)notification{self.label.text = notification.userInfo[@"zlzNotificationKey"];
}

(2)发送方 NextViewController

  • 在 NextViewController.m 的返回点击事件中发送通知
-(void)zlzBackClick{//通知传值---发送通知//object:nil表示群发[[NSNotificationCenter defaultCenter]postNotificationName:@"zlzNotify" object:nil userInfo:@{@"zlzNotificationKey":self.textFiled.text}];// dismissViewControllerAnimated:animated:completion://用来 关闭当前视图控制器 的方法,通常用于关闭通过 presentViewController:animated:completion: 模态展示的视图控制器//completion:nil:表示关闭完成后执行的回调[self dismissViewControllerAnimated:YES completion:nil];
}

3、总结

属性传值简单的正向传值,不能跨页面传值
单例传值可以正向反向传值,可以跨页面,但是需要创建一个单例对象
NSUserDefaults传值类似单例传值,区别是单例传值是把值写入内存,而它是把值写入沙盒文件
代理传值主要用于反向传值,一对一,必须两个页面建立代理关系
block传值

主要用于反向传值,一对一

代理传值能做的它都能做,但他不能取代代理传值

通知传值可以跨页面传值,多对多

相关文章:

IOS界面传值-OC

1、页面跳转 由 ViewController 页面跳转至 NextViewController 页面 &#xff08;1&#xff09;ViewController ViewController.h #import <UIKit/UIKit.h>interface ViewController : UIViewControllerend ViewController.m #import "ViewController.h" …...

阿里mod_asr3.0集成webrtc静音算法

alibabacloud-nls-cpp-sdk-master 先到阿里官网下载nls库的源代码&#xff0c;编译生成对应的库文件和头文件。 我编译的放到了以下目录。 /home/jp/2025/alibabacloud-nls-cpp-sdk-master/build/install/NlsSdk3.X_LINUX/include/ /home/jp/2025/alibabacloud-nls-cpp-sdk-…...

[Git] git pull --rebase / git rebase origin/master

1. git pull --rebase 这个命令是用来更新当前分支的&#xff0c;它会从远程仓库拉取更新&#xff0c;然后将你的本地提交重新应用到更新后的基础之上。它相当于先执行 git fetch&#xff0c;然后在当前分支上执行 git rebase origin/。使用 --rebase 而不是默认的 merge 可以…...

Leetcode​​​​​​​3270:求出数字答案

题目描述&#xff1a; 给你三个 正 整数 num1 &#xff0c;num2 和 num3 。 数字 num1 &#xff0c;num2 和 num3 的数字答案 key 是一个四位数&#xff0c;定义如下&#xff1a; 一开始&#xff0c;如果有数字 少于 四位数&#xff0c;给它补 前导 0 。答案 key 的第 i 个数…...

第十一章 施工监测

11 施工监测 11.1 施工监测主要内容、常用仪器与方法 11.1.1 主要内容 1.目的和意义 及时掌握工程自身及周边环境风险动态、通过分析和预测工程结构及周边环境的安全状态与发展趋势&#xff0c;优化调整设计参数和施工参数提供数据支撑。为今后同类工程施工提供类比资料 2…...

Python爬虫应用领域

Python爬虫作为一种强大的数据获取工具&#xff0c;在多个领域发挥着重要作用。以下是Python爬虫在不同领域的应用情况&#xff1a; 一、数据采集与分析 &#xff08;一&#xff09;市场调研 产品信息收集&#xff1a;爬取电商平台的产品详情、价格、销量、用户评价等数据&am…...

软件架构考试基础知识 002:进程的状态与其切换

进程状态转换的说明 在操作系统中&#xff0c;进程的状态表示其当前的执行情况和资源占用情况。进程状态的转换反映了操作系统如何管理和调度进程。以下是进程状态转换的说明&#xff1a; 1. 三态模型&#xff08;Three-state Model&#xff09; 三态模型是最基础的进程状态模…...

新车月交付突破2万辆!小鹏汽车“激活”智驾之困待解

首次突破月交付2万辆规模的小鹏汽车&#xff0c;稳吗&#xff1f; 本周&#xff0c;高工智能汽车研究院发布的最新监测数据显示&#xff0c;2024年11月&#xff0c;小鹏汽车在国内市场&#xff08;不含出口&#xff09;交付量&#xff08;上险口径&#xff0c;下同&#xff09…...

VideoPlayer插件的功能和用法

文章目录 1. 概念介绍2. 使用方法2.1 实现步骤2.2 具体细节3. 示例代码4. 内容总结我们在上一章回中介绍了"如何获取文件类型"相关的内容,本章回中将介绍如何播放视频.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 播放视频是我们常用的功能,不过Flutter官方…...

.NET体系架构

引言 .NET是由微软开发的一个广泛应用的开发平台&#xff0c;旨在帮助开发者构建各种类型的应用程序&#xff0c;包括桌面应用、Web应用、移动应用和云服务。最初&#xff0c;.NET平台的构建主要集中在Windows环境上&#xff0c;但随着.NET Core和随后.NET 5及以上版本的推出&…...

QT中引入OpenCV库总结(qmake方式和cmake方式)

文章目录 前言opencv环境配置一、opencv库获取的两种方式二、qmake和cmake配置2.1、 qmake2.2、cmake2.2.1、引入opencv示例 三、qt与opencv对应关系四、问题 前言 我的软件环境&#xff0c;写在前面 Windows10QT5.12.12VS2017OpenCV4.5.4 opencv环境配置 一、opencv库获取…...

matlab系列专栏-快捷键速查手册

目录 1在命令窗口(Command Window)中 2. 在编辑器(Editor)&#xff08;m文件&#xff09;中 1在命令窗口(Command Window)中 1)【↑、↓】——切换到之前、之后运行过的命令&#xff0c;可以重复按多次来达到想要的命令。 2)【Tab】——自动补全。在Command窗口&#xff0c…...

对于 NestJS + TypeORM 查询构造器分页功能的简单二次封装

NestJS 作为 Node.js 领域备受欢迎的框架&#xff0c;其与 TypeORM 的结合为开发者提供了强大的 ORM 能力&#xff0c;简化了数据库操作。然而&#xff0c;在处理分页查询时&#xff0c;直接在每个服务方法中重复编写分页逻辑既不高效也容易出错。为此&#xff0c;我们可以通过…...

Kafka消息队列出现消息堆积如何解决

Kafka消息队列出现消息堆积&#xff0c;通常是由于消息生产速度远大于消费速度&#xff0c;可能由消费者处理能力不足、网络问题、Kafka配置不合理等原因导致。以下从多个方面介绍应对消息堆积的方法&#xff1a; 消费者端优化 提升消费并行度 增加消费者实例数量&#xff1a…...

LeetCode hot100-100

287. 寻找重复数 给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 &#xff0c;返回 这个重复的数 。你设计的解决方案必须 不修改 数组…...

Vue.js:现代前端开发的灵活框架

大家好&#xff01;我是 [数擎 AI]&#xff0c;一位热爱探索新技术的前端开发者&#xff0c;在这里分享前端和 Web3D、AI 技术的干货与实战经验。如果你对技术有热情&#xff0c;欢迎关注我的文章&#xff0c;我们一起成长、进步&#xff01; 开发领域&#xff1a;前端开发 | A…...

CUDNN详解

文章目录 CUDNN详解一、引言二、cuDNN的基本使用1、初始化cuDNN句柄2、创建和设置描述符 三、执行卷积操作1、设置卷积参数2、选择卷积算法3、执行卷积 四、使用示例五、总结 CUDNN详解 一、引言 cuDNN&#xff08;CUDA Deep Neural Network library&#xff09;是NVIDIA为深度…...

下载并安装MySQL

在Linux系统上下载并安装数据库&#xff08;以MySQL为例&#xff09;的步骤如下&#xff1a; 一、下载MySQL 访问MySQL官网 打开浏览器&#xff0c;访问MySQL的官方网站&#xff1a;https://www.mysql.com/。 进入下载页面 在MySQL官网首页&#xff0c;找到并点击“Downloads…...

Linux ffmpeg 基础用法

简介 FFmpeg 是一个强大的开源多媒体框架&#xff0c;用于处理视频、音频和其他多媒体文件和流。它允许转换、录制、编辑、流媒体等等。 安装 Debian/Ubuntu sudo apt update sudo apt install ffmpegRed Hat/CentOS sudo dnf install ffmpegmacOS (via Homebrew) brew i…...

【C++入门】详解(中)

目录 &#x1f495;1.函数的重载 &#x1f495;2.引用的定义 &#x1f495;3.引用的一些常见问题 &#x1f495;4.引用——权限的放大/缩小/平移 &#x1f495;5. 不存在的空引用 &#x1f495;6.引用作为函数参数的速度之快&#xff08;代码体现&#xff09; &#x1f4…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献

Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译&#xff1a; ### 胃肠道癌症的发病率呈上升趋势&#xff0c;且有年轻化倾向&#xff08;Bray等人&#xff0c;2018&#x…...

21-Oracle 23 ai-Automatic SQL Plan Management(SPM)

小伙伴们&#xff0c;有没有迁移数据库完毕后或是突然某一天在同一个实例上同样的SQL&#xff0c; 性能不一样了、业务反馈卡顿、业务超时等各种匪夷所思的现状。 于是SPM定位开始&#xff0c;OCM考试中SPM必考。 其他的AWR、ASH、SQLHC、SQLT、SQL profile等换作下一个话题…...