gpt4 book ai didi

iphone - 如何声明 NSString 常量以传递给 NSNotificationCenter

转载 作者:行者123 更新时间:2023-12-03 18:18:02 25 4
gpt4 key购买 nike

我的 .h 文件中有以下内容:

#ifndef _BALANCE_NOTIFICATION
#define _BALANCE NOTIFICATION
const NSString *BalanceUpdateNotification
#endif

以及我的 .m 文件中的以下内容:

const NSString *BalanceUpdateNotification = @"BalanceUpdateNotification";

我将其与以下代码一起使用:

[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(updateBalance:)
name:BalanceUpdateNotification
object:nil];

[[NSNotificatoinCenter defaultCenter]
postNotificationName:BalanceUpdateNotification
object:self userInfo:nil];

这有效,但它给了我一个警告:

Passing argument 1 of 'postNotificationName:object:userInfo' discards qualifiers from pointer target type

所以,我可以将其转换为 (NSString *),但我想知道执行此操作的正确方法是什么。

最佳答案

通常,您在 header 中将变量声明为 extern。最惯用的方式似乎是这样的:

标题

#ifndef __HEADER_H__
#define __HEADER_H__

extern NSString * const BalanceUpdateNotification;

#endif

来源

#include "header.h"

NSString * const BalanceUpdateNotification = @"BalanceUpdateNotification";

extern 告诉编译器,名称为 BalanceUpdateNotificationNSString * const 类型的内容存在于某处。它可能位于包含 header 的源文件中,但也可能不是。编译器的工作不是确保它确实存在,而是确保您根据键入方式正确使用它。链接器的工作是确保 BalanceUpdateNotification 实际上已在某处定义,并且仅定义一次。

const 放在 * 后面意味着您无法重新分配 BalanceUpdateNotification 以指向不同的 NSString .

关于iphone - 如何声明 NSString 常量以传递给 NSNotificationCenter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2917941/

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