NSNotificationCenter 通知中心实现传值

本文详细介绍了如何在iOS应用中利用通知中心实现两个界面间的数据传递,包括界面初始化、按钮点击事件处理及通知发送与接收等关键步骤。通过实例代码演示了如何在界面启动时确保监听器生效,确保数据正确传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         在使用通知中心进行传值,接收界面必须先监听。这是在编写程序时容易被忽略的,而且不容易发现错误。现在通过一段代码进行详细解释。

      有两个界面,第一个界面有一个UIButton控件,点击UIButton,将第值传给第二个界面:

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    _firstController = [[FirstViewController alloc]init];

    _secondController = [[SecondViewController alloc]init];

//在启动应用程序时,为了节省内存,第二个页面并没有加载,此时,第二个页面并没有做监听,所以第二个页面接受不到数据。所以我们可以给其加个颜色让程序启动时,第二个页面做监听

   _secondController.view.backgroundColor = [UIColor redColor];//修改代码

或者做如下改动:

 //@selector 可以跨类寻找方法,但在第二界面的.h文件中要进行定义

 [[NSNotificationCenter defaultCenter]addObserver:__secondController selector:@selector(notifiListen:)name:@"Msg" object:nil];

    self.window.rootViewController = _firstController;

    self.window.backgroundColor = [UIColor whiteColor];

    [self.window makeKeyAndVisible];

    return YES;

}


FirsrtViewController.m中:

- (void)viewDidLoad

{

    [super viewDidLoad];

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];

    btn.frame = CGRectMake(100, 100, 100, 30);

    btn.backgroundColor = [UIColor grayColor];

    [btn setTitle:@"NSNOtifition" forState:UIControlStateNormal];

    [btn addTarget:self action:@selector(btnClick:)   forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:btn];


}

//给UIButton添加点击事件

-(void)btnClick:(UIButton*)bt

{    NSArray *array = @[@"a",@"b"];

    //通过通知中心想外发送一包数据  第一个随便给参数,第二个传得参数

    [[NSNotificationCenter defaultCenter]postNotificationName:@"Msg" object:array];

}


SecondViewController.h中

-(void)notifitionListen:(NSNotification*)notifi;

SecondViewController.m中

- (void)viewDidLoad

{

    [super viewDidLoad];

   // [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(notifiListen:) name:@"Msg" object:nil];   

}

-(void)notifiListen:(NSNotification*)n{

    //解析传递的数据

    NSLog(@"%@",[n object]);

}


第一次写博客,有错误的地方希望各位大牛多多指正





内容概要:本文详细比较了GPU、TPU专用AI芯片在大模型推理优化方面的性能、成本及适用场景。GPU以其强大的并行计算能力和高带宽显存,适用于多种类型的神经网络模型和计算任务,尤其适合快速原型开发和边缘计算设备。TPU专为机器学习设计,擅长处理大规模矩阵运算密集型任务,如Transformer模型的推理,具有高吞吐量和低延迟特性,适用于自然语言处理和大规模数据中心的推理任务。专用AI芯片通过高度定制化架构,针对特定神经网络模型进行优化,如卷积神经网络(CNN),在处理特定任务时表现出色,同时具备低功耗和高能效比的优势,适用于边缘计算设备。文章还介绍了各自的优化工具和框架,如CUDA、TensorRT、TPU编译器等,并从硬件成本、运营成本和开发成本三个角度进行了成本对比。 适合人群:从事人工智能、深度学习领域的研究人员和技术人员,尤其是对大模型推理优化感兴趣的读者。 使用场景及目标:①帮助读者理解GPU、TPU和专用AI芯片在大模型推理中的优缺点;②为选择适合的硬件平台提供参考依据,以实现最优的推理性能和成本效益;③介绍各种优化工具和框架,帮助开发者高效部署和优化模型。 其他说明:本文不仅涵盖了硬件架构特性,还深入探讨了优化技术和应用场景,旨在为读者提供全面的技术参考。在选择硬件平台时,需综合考虑具体任务需求、预算限制及开发资源等因素。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值