iOS小菜那些年写过的宏文件

一、对新手有用而不一定知道的几个宏

  这里要吐槽的是,很多人加载了libextobjc的Pod库,却只用到@weakify(self)和@strongify(self),真是浪费的无法理解,自己写一个,或者把要用的扒出来不行吗。。。

  首先,挂出自己写的,现在用的顺手的几个宏,希望能对新手们有所帮助

/* ---------   主线程执行 --------- */
#define excecuteOnMain(a) if ([NSThread isMainThread]) {\
                              a                          }                          else {                              dispatch_async(dispatch_get_main_queue(), ^{                                  a                              });                          }

/* ---   weak strong Dance ------ */
#ifdef DEBUG
    #define ext_keywordify autoreleasepool {}
#else
    #define ext_keywordify try {} @catch (...) {}
#endif

#define weakify(self) \
    ext_keywordify     __attribute__((objc_ownership(weak))) __typeof__(self) self_weak_ = (self)

#define strongify(self) \
    ext_keywordify _Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Wshadow\"")     __attribute__((objc_ownership(strong))) __typeof__(self) self = (self_weak_)_Pragma("clang diagnostic pop")

/* --------   空语句挂载断点 ------ */
#ifdef DEBUG
    #define __NOP__ assert(1)
#else
    #define __NOP__
#endif

使用示例

- (void)viewDidLoad {
    [super viewDidLoad];
    @weakify(self);
    self.block =^{
        @strongify(self);
        __NOP__;
        self.view.backgroundColor = [UIColor redColor];
    };
    excecuteOnMain(
        self.block();
    )
}

二、那些年写过的宏文件  

  初学iOS时,保留着C程序员的习惯,什么东西,方法也好,常量也好,代码块也好,都喜欢写成宏,而写了几百行的宏定义。截图如下,要用的童鞋可以拿去用。我现在会觉得,有些方法类的宏还是写到util类里比较好呢,会比较好调试呢。编程之路法无定法,看个人喜好了。同时,也缅怀下那些青葱岁月,没有屏幕适配,没有如今要从iOS6.0兼容到9.3的艰辛,一切单纯而美好^ ^

时间: 2024-10-09 23:19:58

iOS小菜那些年写过的宏文件的相关文章

【iOS开发问题】使用NSCoding写入本地文件读取不出来或者文件没有写入本地

今天写私人通讯录的时候,找了半天文件写入位置, ]详细位置参考 http://blog.csdn.net/ttf1993/article/details/45154349 找到位置后我发现联系人没有写入本地 后来找到原因因为下面这句代码 NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) lastObject]; // 2.2.获得文件的全路径

IOS 学习之 iOS沙盒(sandbox) 介绍 沙盒机制 文件操作(一)

1.iOS沙盒机制 iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. 1.1.每个应用程序都有自己的存储空间 1.2.应用程序不能翻过自己的围墙去访问别的存储空间的内容 1.3.应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行.     通过这张图只能从表层上理解sandbox是一种安全体系,应用程序的所有操作都要通过这个体系来执行,其中核心内容是

如何从ios酷我音乐盒中导出已下载的音乐文件(使用Java编程实现)

如何从ios酷我音乐盒中导出已下载的音乐文件 本文所涉及内容用于技术学习,请勿用于不正当用途,否则后果自负. 酷我音乐ios版下载的音乐文件,通过同步助手等软件查看时,发现音乐文件都是一串数字命名.通过网上查找和自己尝试,发现那些文件都是音频文件改了文件名而已.只要修改回文件名,就能和正常的音乐一样播放了. 参考网址: http://blog.sina.com.cn/s/blog_4d5428240101enzu.html 在网上找到了一个软件,也就是上面参考网址中的软件,但是使用的时候出现了问

读、写SD上的文件请按如下步骤进行

1.调用Environment的getExternalStorageState()方法判断手机上是否插入了SD卡,并且应用程序具有读写SD卡的权限.例如使用如下代码//Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)2.调用Environment的getExternalStorageDirectory()方法来获取外部存储器,也就是SD卡的目录.3.使用FileInputStream.FileOutpu

iOS开发技巧之查看模拟器沙盒文件

iOS开发技巧之查看模拟器沙盒文件 iOS开发中,在对数据库进行操作时,有时我们需要直观的查看数据库的内容,那么我们如何找到沙盒中的这个文件呢,步骤很简单: 1.点击Finder选项栏上的前往菜单: 2.选择前往文件夹选项: 前往的文件路径为:/Users/username/Library/Application Support/iPhone Simulator/ 其中username为当前mac电脑的用户名. 3.界面类似如下模样,选择一个版本的模拟器,应用的沙盒文件就在Application

通过MultipleOutputs写到多个文件

MultipleOutputs 类可以将数据写到多个文件,这些文件的名称源于输出的键和值或者任意字符串.这允许每个 reducer(或者只有 map 作业的 mapper)创建多个文件. 采用name-m-nnnnn 形式的文件名用于 map 输出,name-r-nnnnn 形式的文件名用于 reduce 输出,其中 name 是由程序设定的任意名字, nnnnn 是一个指明块号的整数(从 0 开始).块号保证从不同块(mapper 或 reducer)输出在相同名字情况下不会冲突 1.项目需求

python写个简单的文件上传是有多难,要么那么复杂,要么各种,,,老子来写个简单的

def upload(url,params): ''' 上传文件到服务器,不适合大文件 @params url 你懂的 @params {"action":"xxx","@file","file_path"} 普通参数 key:value 文件key头部加@ ''' import os import urllib2 BOUNDARY = "0450de9528f040078csuxianbaozic06"

[转载] 写mmap内存和文件产生几百ms延迟原因

原文: http://weibo.com/p/1001603830912709174661 写mmap内存和文件产生几百ms延迟原因 2015年4月12日 21:10 阅读 4274 最近看到一个bug介绍,作者花了4个月追踪定位,发现jvm统计会造成垃圾回收过程停顿好几百ms.jvm统计信息会写到一片内存区域中,该区域mmap到/tmp下的文件. 这个Bug的详细情况见下面的链接: The Four Month Bug: JVM statistics cause garbage collect

ios配合iTuns提取应用Documents下的文件到本地

出处:http://blog.csdn.net/jianandjan/article/details/50442988 有一些App需要通过使用iTunes让用户上传和下载文档.要让iOS程序支持iTunes文件交换其实很简单,只需要在程序的Info.plist里增加一个键:UIFileSharingEnabled(Application supports iTunes file sharing),赋值YES. 这样,编译之后进行机上运行的时候,连接设备到iTunes,就能进行文件交换了. 如果