- 浏览: 904361 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (466)
- iPhone, iOS , Objective-c (155)
- 数据库 (20)
- 设计模式 (5)
- 第三方包管理,cocoapod (2)
- 版本管理, SVN, Subversion, Git (1)
- Google, Android, Java (14)
- Wordpress (1)
- 职业素养 (3)
- 版本管理,git (3)
- 前端小技巧 (2)
- flash (1)
- javascript (5)
- Ruby (0)
- 编程语言 (1)
- 网络常识 (1)
- 找到生活好感觉 (5)
- 产品经理 (1)
- markdown (1)
- 云服务器 (1)
- iPhone (116)
- iOS (116)
- Objective-c (116)
- 学习技巧 (2)
- Google (5)
- Android (6)
- Java (21)
- python (1)
- sqlite (3)
- node.js (2)
- mongodb (2)
- 学习技巧,阅读 (2)
- 软件测试 (3)
- 架构设计 (2)
- 设计 (1)
- Spring framework (3)
- junit (1)
- Linux (2)
- 软件 (1)
- Struts2 (1)
- 版本管理 (3)
- SVN (3)
- Subversion (3)
- Git (3)
- mysql (5)
- quartz (1)
- 无关技术 (1)
- 前端 (1)
- Redis (1)
- 产品管理 (0)
- 计算机常识 (1)
- 计算机科学 (0)
- swift (1)
- 服务器 (2)
- 搜索 (1)
- Scala (1)
- J2EE (1)
- maven (1)
- 前端css (1)
- 英语 (1)
- 消息队列 (1)
- kafka (0)
- apache kafka (4)
- netbeans (1)
- IDE (2)
- 歌词 (1)
- 过滤器实现 (1)
- linux vim vi (1)
- jmeter (1)
- springcloud (1)
最新评论
-
hujingnemo:
不知道为什么打不开
CHM如何改编字体大小 -
weiboyuan:
求答案 weiboyuanios@163.com
iOS软件工程师面试题(高级) -
xueji5368:
这个现在已经广泛使用了嘛!
RoboGuice入门 -
Yao__Shun__Yu:
...
CHM如何改编字体大小 -
353144886:
非常之详细 美女求认识
sqlite数据类型 datetime处理
If you look in NSObjCRuntime.h (in Foundation) you will see that FOUNDATION_EXPORT compiles to extern in C, extern "C" in C++, and other things in Win32. So, it's a bit more compatible. For most projects, this won't make any difference.
You should create a header file like
// Constants.h
FOUNDATION_EXPORT NSString *const MyFirstConstant;
FOUNDATION_EXPORT NSString *const MySecondConstant;
//etc.
(you can use extern instead of FOUNDATION_EXPORT if your code will not be used in mixed C/C++ environments or on other platforms)
You can include this file in each file that uses the constants or in the pre-compiled header for the project.
You define these constants in a .m file like
// Constants.m
NSString *const MyFirstConstant = @"FirstConstant";
NSString *const MySecondConstant = @"SecondConstant";
Constants.m should be added to your application/framework's target so that it is linked in to the final product.
The advantage of using string constants instead of #define'd constants is that you can test for equality using pointer comparison (stringInstance == MyFirstConstant) which is much faster than string comparison ([stringInstance isEqualToString:MyFirstConstant]) (and easier to read, IMO).
You should create a header file like
// Constants.h
FOUNDATION_EXPORT NSString *const MyFirstConstant;
FOUNDATION_EXPORT NSString *const MySecondConstant;
//etc.
(you can use extern instead of FOUNDATION_EXPORT if your code will not be used in mixed C/C++ environments or on other platforms)
You can include this file in each file that uses the constants or in the pre-compiled header for the project.
You define these constants in a .m file like
// Constants.m
NSString *const MyFirstConstant = @"FirstConstant";
NSString *const MySecondConstant = @"SecondConstant";
Constants.m should be added to your application/framework's target so that it is linked in to the final product.
The advantage of using string constants instead of #define'd constants is that you can test for equality using pointer comparison (stringInstance == MyFirstConstant) which is much faster than string comparison ([stringInstance isEqualToString:MyFirstConstant]) (and easier to read, IMO).
发表评论
-
oc为啥不用try catch
2016-03-23 11:56 1404简单的来说,Apple虽然同时提供了错误处理(NSError) ... -
ReactiveCocoa笔记
2016-03-14 12:31 0为什么使用MVVM?为什么使用ReactiveCocoa? 概 ... -
PINCache
2016-01-19 15:11 948PINCache是线程安全的键值缓存框架,用来储存难以获取或重 ... -
Swift设计模式
2015-12-29 12:04 0Swift设计模式 -
Understanding Swift access control
2015-12-29 12:03 0Swift takes an unusual approuac ... -
cocoapods因GEM_HOME升级遇到问题解决办法
2015-12-17 14:40 926Installing CocoaPods on OS X 10 ... -
swift 闭包的比较写法
2015-12-16 11:10 755let names = ["Chris", ... -
iOS 生成二维码,生成条形码图片
2015-12-03 15:44 1472#pragma mark - 生成条形码以及二维码 // ... -
解决cocoapods 更新慢的问题
2015-11-23 17:01 756最近使用CocoaPods来添加第三方类库,无论是执行pod ... -
iOS中级面试题
2015-11-20 15:12 1182OneV‘s Den在博客里出了10道iOS面试题,用他的话是 ... -
cocoapods出错解决方法
2015-11-09 13:09 746自定义GEM_HOME $ mkdir -p $HOME/So ... -
oc时间从美国时间改到中国时间
2015-10-19 14:12 979_formatter = [[NSDateFormatt ... -
27个iOS开发库
2015-07-24 16:10 769超长慎入列表: DZNEmptyDataSet(UI,空表格 ... -
Values of type 'NSInteger' should not be used as format arguments; add an explic
2015-07-24 10:10 844Values of type 'NSInteger' shou ... -
iOS架构心得体会
2015-05-18 18:35 815好的架构不是设计出来的,而是进行出来的。 我的iOS工程架构 ... -
UICollectionView NSInternalInconsistencyException出现的原因
2015-05-11 11:32 3414'NSInternalInconsistencyExcepti ... -
XLForm-iOS表单库
2015-05-08 14:44 909XLForm是最灵活和强大的iOS类库,用于创建动态table ... -
Info.plist Utility Error: “Info.plist couldn't be opened because there is no suc
2015-05-06 16:13 689http://stackoverflow.com/questi ... -
iOS中Autolayout中各种情况的使用的width,height策略
2015-04-30 15:33 685可以总结为: 如果项目不支持横屏显示,使用w:Compac ... -
一句话加上下拉刷新
2015-04-29 18:22 770怎么一句话添加上拉刷新? https://github.co ...
相关推荐
`FOUNDATION_EXPORT`通常用于Foundation框架中的接口,而`UIKIT_EXTERN`则适用于UIKit框架。它们都类似于`extern`关键字,但提供了更好的兼容性。例如: ```objc // .m 文件 NSString *const ...
extern "C" DLL_EXPORT int AddNumbers(int a, int b) { return a + b; } ``` 10. **最佳实践** - 尽量保持DLL的功能单一,以便于维护和测试。 - 使用接口类来封装DLL的实现,使得客户端只依赖于接口,降低...
在Microsoft Visual Studio 2015 (VS2015) 中,开发人员可以使用C++语言创建MFC(Microsoft Foundation Classes)DLL(Dynamic Link Library)动态库。MFC是微软提供的一套C++类库,它封装了Windows API,使得开发者...
在VC++环境中,MFC(Microsoft Foundation Classes)是一种C++库,用于简化Windows应用程序的开发。动态链接库(DLL)是Windows操作系统中的一个重要组件,它允许代码和资源被多个独立的执行程序共享。本篇文章主要...
5. `extern "C"`:为了跨语言兼容,使用`extern "C"`可以让C++编译器以C语言的方式处理函数,避免名称修饰,使得C++编写的函数可以在C代码中调用。 6. 模块定义文件(.DEF):.DEF文件是定义DLL属性的重要文本文件...
extern "C" __declspec(dllexport) void MyFunction() { // 函数实现 } ``` 总结来说,MFC扩展DLL提供了在DLL中使用MFC类的能力,允许你共享复杂的对象和功能。通过正确导出类、处理资源和使用显式链接,你可以...
为避免这个问题,可以使用`__declspec(dllimport/export)`或使用`extern "C"`导出C++对象。 7. **线程安全与异步调用**:在多线程环境中使用DLL时,需要考虑线程安全问题。DLL中的全局变量和静态成员变量可能引发...
_declspec(dllexport) extern const COLORREF MyColor = RGB(0, 0, 0); _declspec(dllexport) CRect MyRect(10, 10, 20, 20); ``` 注意,如果希望在 DLL 中导出常量或其他非函数类型的实体,需要使用 `extern` ...
extern "C" __declspec(dllexport) int __stdcall Add_new(int a, int b); ``` 2. **使用模块定义(.def)文件声明**:需要在库工程中添加模块文件,格式如下: ```plaintext LIBRARY 库工程名称 EXPORTS 导出...
extern "C" int __declspec(dllexport)add(int x, int y); #endif // lib.cpp #include "lib.h" int add(int x, int y) { return x + y; } ``` `__declspec(dllexport)`关键字用于指示编译器将`add`函数导出到DLL...
创建DLL主要有两种方法:非MFC(Microsoft Foundation Classes)DLL和使用.def文件。 1. **非MFC DLL创建步骤**: - 打开Visual Studio,选择`File` -> `New` -> `Project`,然后选择`Win32 Dynamic-Link Library`...
QT库和MFC(Microsoft Foundation Classes)是两种不同的应用程序开发框架,它们分别由Qt公司和微软公司提供。在软件开发中,有时我们需要在QT环境中调用动态链接库(DLL),或者将QT编译成DLL供MFC应用使用。这篇...
在本示例中,我们将探讨如何使用Visual Studio 2017创建一个C语言编写的动态链接库(DLL),然后在WPF(Windows Presentation Foundation)应用程序中调用这个C库。作者红模仿提供了完整的源码,这对于初学者或...
在Windows编程环境中,MFC(Microsoft Foundation Classes)是一种基于C++的类库,它为开发者提供了构建Windows应用程序的框架。本篇文章将详细讲解如何在MFC_EXE(一个使用MFC构建的可执行程序)中调用MFC_DLL(一...
这里,`EXTERN_C`用于处理C++的名称修饰问题,`DLLEXPORT`表示当前是在DLL中定义,如果在客户端应用中使用,应使用`DLLEXPORT`。 **步骤4:添加对话框资源** 为了在DLL中创建和显示对话框,我们需要先添加一个...
extern "C" __declspec(dllexport) void __stdcall fun(); ``` 使用.def文件可以将函数导出到DLL中,使其可以被外部应用程序调用。例如: ``` LIBRARY MyDLL EXPORTS fun ``` 在MFC下DLL编程中,需要注意DLL的版本...
extern "C" __declspec(dllexport) void MyDllFunction(void); ``` 3. **链接DLL**:在VC++.NET的项目设置中,确保编译器知道DLL的位置,这样在运行时能够找到它。通常,这可以通过在项目的“配置属性”->“链接...