通过检查像 SKStoreProductParameterAffiliateToken 这样的常量的地址来完成什么?
What is accomplished by checking the address of a constant like SKStoreProductParameterAffiliateToken?
我从我正在使用的库中获得了这段代码。
#ifdef __IPHONE_8_0
if (&SKStoreProductParameterAffiliateToken) {
if (self.affiliateToken) {
[appParameters setObject:self.affiliateToken forKey:SKStoreProductParameterAffiliateToken];
if (self.campaignToken) {
[appParameters setObject:self.campaignToken forKey:SKStoreProductParameterCampaignToken];
}
}
}
#endif
Xcode 是说第一行的计算结果总是为真,但这一行到底在做什么?我从未见过 if
和 &
以及那样的常量。
SKStoreProductParameterAffiliateToken
定义为
SK_EXTERN NSString * const SKStoreProductParameterAffiliateToken NS_AVAILABLE_IOS(8_0);
开发人员要检查什么,常量的地址?他是否试图检查 iOS 的版本是否定义了这个常量,通过这样做,他试图检查 if should 运行 中的指令?但是他已经ifdef __IPHONE_8_0
... (??!!)
我不明白。
无论如何我正在为 iOS 9.3 编译,所以我可以删除 if
和 ifdef
,对吗?
检查弱链接符号是否可用。如果包含该符号的 library/framework 已被弱链接且不可用,其地址将计算为 NULL
,并且 if
条件将为假。
有关完整详细信息,请参阅 Apple Using SDK-Based Development 中的 使用弱链接方法、函数和符号。
#ifdef __IPHONE_8_0
检查 Xcode 是否应该在里面编译代码。 Ohterwise 旧版本 Xcode 将显示关于未知变量 SKStoreProductParameterAffiliateToken
.
的错误
但是当使用较新的 Xcode 版本(使用 iOS SDK 8+)时,我们仍然可以为我们的项目设置一个较低的最低目标。在这种情况下,为了避免在低于 iOS 8 版本的设备上崩溃,我们应该首先检查变量、class、方法或函数是否存在。
在您的情况下,我们正在检查指向 SKStoreProductParameterAffiliateToken
的指针是否不是 NULL
,这意味着应用程序当前 运行 至少在 iOS 8.
我从我正在使用的库中获得了这段代码。
#ifdef __IPHONE_8_0
if (&SKStoreProductParameterAffiliateToken) {
if (self.affiliateToken) {
[appParameters setObject:self.affiliateToken forKey:SKStoreProductParameterAffiliateToken];
if (self.campaignToken) {
[appParameters setObject:self.campaignToken forKey:SKStoreProductParameterCampaignToken];
}
}
}
#endif
Xcode 是说第一行的计算结果总是为真,但这一行到底在做什么?我从未见过 if
和 &
以及那样的常量。
SKStoreProductParameterAffiliateToken
定义为
SK_EXTERN NSString * const SKStoreProductParameterAffiliateToken NS_AVAILABLE_IOS(8_0);
开发人员要检查什么,常量的地址?他是否试图检查 iOS 的版本是否定义了这个常量,通过这样做,他试图检查 if should 运行 中的指令?但是他已经ifdef __IPHONE_8_0
... (??!!)
我不明白。
无论如何我正在为 iOS 9.3 编译,所以我可以删除 if
和 ifdef
,对吗?
检查弱链接符号是否可用。如果包含该符号的 library/framework 已被弱链接且不可用,其地址将计算为 NULL
,并且 if
条件将为假。
有关完整详细信息,请参阅 Apple Using SDK-Based Development 中的 使用弱链接方法、函数和符号。
#ifdef __IPHONE_8_0
检查 Xcode 是否应该在里面编译代码。 Ohterwise 旧版本 Xcode 将显示关于未知变量 SKStoreProductParameterAffiliateToken
.
但是当使用较新的 Xcode 版本(使用 iOS SDK 8+)时,我们仍然可以为我们的项目设置一个较低的最低目标。在这种情况下,为了避免在低于 iOS 8 版本的设备上崩溃,我们应该首先检查变量、class、方法或函数是否存在。
在您的情况下,我们正在检查指向 SKStoreProductParameterAffiliateToken
的指针是否不是 NULL
,这意味着应用程序当前 运行 至少在 iOS 8.