Mach-O

PE32/PE32+ 是 Windows 和 Intel 的 EFI 的二进制文件的可执行文件格式,ELF 是 Linux 和 Unix 的可执行文件格式,通用二进制格式(胖二进制格式)只在 OS X 上支持,Mach-O 是 OS X 的原生可执行文件格式。在 Unix 中,任何文件都可以通过简单的 chmod +x 命令标记为可执行文件,但是不一定能保证这个文件可以执行。OS X 目前只支持三种可执行文件格式:解释器脚本格式、通用二进制格式以及 Mach-O 格式。 可执行文件格式 magic(魔数) 用途 脚本 #! UNIX 脚本和一些解释器脚本的使用格式...
Click to read more ...

synchronized相关知识

首先来说下,为什么写这篇文章。今天在 review 代码的过程中,发现下面单例的写法: + (instancetype)shareInstance{ static KHPickerUtil *manager = nil; @synchronized(manager) { manager = [[KHPickerUtil alloc] init]; } return manager; } 先不论这种方式写单例的问题,这里来讨论一下 @synchronized。 @synchronized 介绍 接触 iOS 开发有一段时间的开发者,相信大家都用过,@synchronized 是在 Objective-C 代码中快读创建互斥锁的一种便...
Click to read more ...

iOS,制作属于自己cocoapods,(framework,bundle)

[TOC] 缘由: 还是那个小活,需求方想用cocoapods来集成framework,由于之前,我从没有自己做过属于自己的cocoapods,所以也是一脸懵逼,各种查资料. 制作cocoapods步骤: 代码提交到github平台 创建.podspec 编辑.podspec 项目打tag 验证.podspec 注册 cocoapods trunk帐号 发布.podspec到cocoapods 1.代码提交到github平台 1.在github上创建一个新的仓库<图中的1、2一定要选择,2可以是其他的License> 2.clone代码到本地 3.相加自己的项目,然后提交到github上 ​ git add . ​ ...
Click to read more ...

iOS中,Framework和.a的打包及使用

最近在做一个小项目,需要给客户一个demo测试,有一部分核心代码暂时不想让客户知道,就想到了打包成framework或.a库。库有两种: 静态库:.a和.framework 动态库:.tbd和.framework 静态库和动态库的区别 .a文件肯定是静态库,. tbd肯定是动态库,.framework可能是静态库也可能是动态库 静态库在链接时,会被完整的复制到可执行文件中,如果多个App都使用了同一个静态库,那么每个App都会拷贝一份,缺点是浪费内存。类似于定义一个基本变量,使用该基本变量是是新复制了一份数据,而不是原来定义的; 动态库不会复制,只有一份,程序运行时动态加载到内存中,系统只会加载一次,多个程序共用一份,节约了内存。类似于使用变量的内存地址...
Click to read more ...

iOS开发错误集锦

在开发中.我们可能会遇到各种各样的问题.下面的问题是我近期遇到的 1.Xcode创建项目时点选Git后创建的项目一直报此错”Couldn’t communicate with a helper application.” 解决办法: xcrun git config --global user.email your@email.com xcrun git config --global user.name "your name" 注意事项: 邮箱注册github的邮箱 名字为github的用户名 2.SVN: Unexpected HTTP status 405‘Method Not allowed’on ‘/’ 我是在add repository的时候遇到这个问...
Click to read more ...

iOS-导航栏颜色透明度渐变

最近公司项目,需要在首页实现一个效果,随着屏幕的滚动,导航栏背景色从没有到完全显示也就是透明度从0-1的过程.效果如下 实现方法 1.随着屏幕的滚动,改变导航栏的alpha,但是这样有一个不好的现象,就是导航栏leftItem,rightItem等也会跟着改变,这个效果不是我需要的,我需要的是只改变背景色的alpha 2.我在导航栏上添加了一个view,让view随着屏幕的滚动实现效果,这个时候,添加的view最好在最底层,这样才不会让你添加的view遮盖住其他控件.部分代码如下 在viewDidLoad中添加如下代码 [self.navigationController.navigationBar insertSubview:self.aplhaView atIndex:0]; ...
Click to read more ...