NSApplicationLoad在C标头中?

Nonneneo

我发现必须调用NSApplicationLoad才能获得显示重配置回调。我的程序是用C语言编写的,出于各种原因,我想避免将Objective-C代码添加到我的项目中。

在其中NSApplicationLoad定义的标头Cocoa/Cocoa.hAppKit/AppKit.h)是Objective-C标头,并且在使用常规C编译器进行编译时自然会引发很多错误。

NSApplicationLoad用一个简单的extern void NSApplicationLoad(void)原型进行调用就可以了,实际上我的程序可以正常工作。但是,我有点担心这不是一种“正确”的方法,因为感觉我应该包括一些东西。

是否有包含NSApplicationLoad的直接C头(例如CoreFoundation或ApplicationServices头)?如果不是,我目前的方法(仅应用原型)是否安全?

陈柏霖

您可以包装NSApplicationLoadC函数,然后在c代码中调用包装函数。

包装器

BOOL MyNSApplicationLoad(void);

Wrapper.m(需要是ObjC文件才能包含ObjC标头)

#include <Cocoa/Cocoa.h>
BOOL MyNSApplicationLoad(void) {
    return NSApplicationLoad();
}

一些

#include "Wrapper.h"

void foo() {
   MyNSApplicationLoad();
}

因此,即使NSApplicationLoad在将来的SDK版本中更改的签名,您也会得到注意,并且只需要修改包装函数即可。

但是,NSApplicationLoad由于它是有文档的公共API ,因此极不可能进行更改。只需BOOL NSApplicationLoad(void)在您的头文件之一中声明就足够安全了。


您可能会注意到,事实BOOL NSApplicationLoad (void)并非如此void NSApplicationLoad(void)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++标头中的名称空间

来自分类Dev

在C标头中声明变量

来自分类Dev

定义在C标头中传递结构的函数

来自分类Dev

在Objective C标头中访问Swift类

来自分类Dev

移植的c标头中的NULL vs nullptr

来自分类Dev

如何在Objective-C标头中引用Swift枚举

来自分类Dev

C ++:在标头中声明非全局变量?

来自分类Dev

可以将#includes放在C ++标头中吗?

来自分类Dev

C ++-在模板类之外但在标头中定义成员函数

来自分类Dev

C ++继承:在标头中调用基类构造函数

来自分类Dev

C ++标头中gnuradio的PSK块在哪里?

来自分类Dev

在标头中声明变量并在.c中定义

来自分类Dev

在C ++算法标头中,为什么要使用“!(val <* first)”?

来自分类Dev

在汇编文件中使用C标头中的数据结构

来自分类Dev

在C的标头中定义别名类型的extern变量

来自分类Dev

可以将#includes放在C ++标头中吗?

来自分类Dev

标头中声明的难以捉摸的C函数

来自分类Dev

C ++标头中extern变量的未定义引用

来自分类Dev

C ++标头中gnuradio的PSK块在哪里?

来自分类Dev

Linux C:重新定义包含标头中的错误

来自分类Dev

由于C ++ 11标准,标头中的QtGStreamer编译时错误?

来自分类Dev

LinqToExcel标头中的点

来自分类Dev

GeoJSON标头中的MetaData

来自分类Dev

UITableview标头中的UITapGesture

来自分类Dev

标头中的条件问题

来自分类Dev

标头中的滑块重复

来自分类Dev

标头中的间距

来自分类Dev

HTTP标头中的令牌?

来自分类Dev

谓词标头中的数学