iOS:#ifdef的使用

此方法能用好,可以在demo中起到至关重要的作用,此处有三种情况

一、

#ifdef XXXX
  //...demo块1...
#else
  //...demo块2...
#endif

此处实现机制是:如果xxxx编译过,即实现demo块1,否则为demo块2,#endif为结束。

#ifndef _XXXX
  //...程序段1...
#else
  //...程序段2...
#endif

此处实现机制是:当xxxx未编译过时实现demo块1,否则实现demo块2,与上面相反

实现机制方法一般是在pch文件里定义好,即:

#define XXXX

我的使用情景是:我的项目为双端,即客户端a和b,某些通用类的接口不一样,但是其他处理方式一模一样,所以使用此方法可以方便的进行判断,即在客户端a中的pch中定义xxxx,然后即可。

但是Xcode6之后苹果就不建议使用pch了。

二、

#define NUM
  .............
  .............
  .............
#ifdef NUM
   //……demo块1……
#else
    //……demo块2……
#endif

即:宏定义一个NUM,如果NUM有定义,则执行demo块1,否则执行demo块2,#endif为结束

我的使用情景是:根据在前一页面的选择不同,push到下一界面视图展现前后顺序不一样,所以我直接传值过去,判断此值内容然后根据内容是否给NUM定义。

三、

#if integerValue(常量)
  //...demo块1...
#else
  //...demo块2...
#endif 

此处实现机制是:如果integerValue有值(非零非空),则执行demo块1,否则执行demo块2

我的使用情景:在demo块1中写入测试demo,使用时给integerValue赋值,不用为nil或0

时间: 2024-10-26 09:41:02

iOS:#ifdef的使用的相关文章

IOS #ifdef 的那些事儿

格式有点乱,整了几次都整不过来,大家将就一下吧. 这篇文章是本人(本人是菜鸟)在第一次接触上线项目时遇到的一个让我记忆深刻的问题. 如果你是大神,那么请绕过,这只是很肤浅的知识点,写给自己也分享给大家. 相信大家对于下面的语句一定不陌生. #ifdef (1) (2) #else (3) #endif 但是我在这里还是稍微解释一下吧(显得专业),如果在这个式子之前有#define(1)的话执行(2)否则执行(3) 如果只是这一点的话那么就对不起各位观众了.下面就要说我遇到的问题了, 我最近接触的

iOS: #ifdef DEBUG

开发时,经常用到NSLog,但release是又想一次过清掉all NSLog,方法是:在xxx-Prefix.pch里添加 [cpp] view plaincopy #ifdef DEBUG #    define DLog(...) NSLog(__VA_ARGS__) #else #    define DLog(...) /* */ #endif #define ALog(...) NSLog(__VA_ARGS__) When you want to log only in debug

Delphi Android程序启动过程

Delphi的Android程序是原生的程序,也就是NativeActivity.那么就需要先看一下NativeActivity的原理, 在AndroidManifest.xml文件里面指定入口activity为nativeactivity,这样应用程序一启动,java虚拟机这边就开一个主线程,主线程创建一个活动,就是nativeactivity,这个nativeactivity在创建的过程中就会去应用程序的.so动态链接库中寻找一个函数: __ANativeActivity_onCreate(

《C++编程思想》第八章 内 联 函 数 (知识点+习题+解答)

一.相关知识点 任何在类中定义的函数自动地成为内联函数,但也可以使用inline关键字放在类外定义的函数前面使之成为内联函数.但为了使之有效,必须使函数体和声明结合在一起,否则,编译器将它作为普通函数对待.因此 inline int PlusOne(int x); 没有任何效果,仅仅只是声明函数(这不一定能够在稍后某个时候得到一个内联定义).成功的方法如下: inline int PlusOne(int x) { return ++x ;} 在头文件里,内联函数默认为内部连接--即它是 stat

iOS中的#ifdef DEBUG为什么会在didFinishLaunchingWithOptions之前执行

#ifdef DEBUG ...程序段1... #else ...程序段2... #endif 这表明如果标识符DEBUG已被#define命令定义过则对程序段1进行编译:否则对程序段2进行编译.#ifdef 的意思是 if define(如果已经#define过).同理#ifndef的意思就是if not define(如果没有#define),与#ifdef意思相反. 而DEBUG是在哪里定义的呢? 在 "Target > Build Settings > Preprocesso

iOS不同版本适配问题(#ifdef __IPHONE_7_0)

部分参考http://www.cnblogs.com/ios8/p/ios-version-com.html 下面举个简单的例子来说明在iOS7.0和iOS6.1(以及更低版本)之间的适配问题(用的是xcode5.0,里边有6.1和7.0两个版本的sdk) 新建一个工程,默认的development target,base sdk以及模拟器的版本都是7.0,在AppDelegate中的didFinishLaunchingWithOptions方法里写下 self.window.tintColor

用c/c++混合编程方式为ios/android实现一个自绘日期选择控件(一)

本文为原创,如有转载,请注明出处:http://www.cnblogs.com/jackybu 前言 章节: 1.需求描述以及c/c++实现日期和月历的基本操作 2.ios实现自绘日期选择控件 3.android实现自绘日期选择控件 目的: 通过一个相对复杂的自定义自绘控件来分享: 1.ios以及android自定义自绘控件的开发流程 2.objc与c/c++混合编程 3.android ndk的环境配置,android studio ndk的编译模式,swig在android ndk开发中的作

iOS 消息推送及本地通知,原理解析

在此整理了一些前辈的思路,根据自己对问题的理解及相似方面的比较做了这篇笔记,本文并未详细讲解,只是根据自己提出问题进行一个解决,希望能对大家有些帮助. 1. deviceToken与UUID,UDID的区别 deviceToken : A token that identifies the device to APS. The token is an opaque data type because that is the form that the provider needs to subm

iOS UIWebview 缓存文件。

最初我以为: testCache = [[NSURLCache alloc]initWithMemoryCapacity:1024*1024*12 diskCapacity:1024*1024*120 diskPath:@"Assitant.db"]; [NSURLCache setSharedURLCache:testCache]; 就能让webview自动的控制缓存,没想到图片还是每次都在重新加载.实在就想不通了,120M还存不下?不知道是不是我用法没对. 后来经过一番查阅之后,发