autoscan: 扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是configure.ac的一个雏形; aclocal: 根据已经安装的宏,用户定义宏和acinclude.m4...aclocal是一个perl 脚本程序,它的定义是:“aclocal - create aclocal.m4 by scanning configure.ac”; automake: 将Makefile.am...如果在configure.ac中定义了一些特殊的宏,比如AC_PROG_LIBTOOL,它会调用libtoolize,否则它 会自己产生config.guess和config.sub; autoconf
Objective-C语言的动态性主要体现在以下3个方面 (1)动态类型:运行时确定对象的类型。 (2)动态绑定:运行时确定对象的方法。 ...type 'NSData *' NSString *testObject = [[NSData alloc]init]; //编译其认为是NSString,所以允许使用NSString的方法,不会有警告和错误...三、动态加载 动态加载分为两部分:动态资源的加载(如:图片资源),代码模块的加载;这些都是在运行时根据需要有选择性的添加到程序中的,是一种代码和资源的“懒加载”模式,这样降低编译时期对内存的开销,提供程序的性能...在消息传递机制中,当开发者编写[receiver message:xxx]语句进行发送消息后,编译器都会将其转换成objc_msgSend C语言的发送格式。...动态性即OC的动态类型、动态绑定、动态加载,将对象类型的确定、方法调用的确定、代码和资源的转载推迟到运行时记性,灵活方便。
copyPerson.age = _age; copyPerson.name = _name; return copyPerson; } @end 二、深拷贝(Deep Copy)和浅拷贝...如果一个类具有可变和不可变的变体:那么可变类应该采用NSMutableCopying协议(而不是NSCopying)并实现mutableCopyWithZone:方法来确保拷贝的对象保持可变。...浅拷贝和深拷贝方法都直接copy属性,但不同之处在于它们如何处理指针引用,特别是对对象的引用(例如NSString * str)。深拷贝复制所引用的对象,而浅拷贝仅复制对这些对象的引用。...NSNumber,NSData, NSDate,NSvalue)中:对immutable对象进行copy操作,是指针复制(浅复制),mutableCopy操作时内容复制(深);对mutable对象进行copy和mutableCopy...在集合类对象(NSArray、NSDictionary、NSSet)中,对immutable对象进行copy,是指针复制,mutableCopy是内容复制;对mutable对象进行copy和mutableCopy
当前主要支持的编译器有GCC和Clang(采用LLVM作为后端)。 Objective-C的商标权属于苹果公司,苹果公司也是这个编程语言的主要开发者。...苹果在开发NeXTSTEP操作系统时使用了Objective-C,之后被OS X和iOS继承下来。...现在Objective-C与Swift是OS X和iOS操作系统、及与其相关的API、Cocoa和Cocoa Touch的主要编程语言。 Objective-C是C语言的严格超集。...头文件包含类,类型,函数和常数的声明。 .m 源代码文件。这是典型的源代码文件扩展名,可以包含 Objective-C 和 C 代码。 .mm 源代码文件。...带有这种扩展名的源代码文件,除了可以包含Objective-C和C代码以外还可以包含C++代码。仅在你的Objective-C代码中确实需要使用C++类或者特性的时候才用这种扩展名。
OC中和Java类似,不支持多重继承,但OOP语言C++就支持多继承,为什么OC不支持多继承稍后将会提到。 说到继承呢,想到了一本书上是引用《大话西游》里的一句话来描述继承的。...在Objective-C中super是指向直接父类的指针,而self是指向本身的指针,self就相当于java中的this指针。...在Objectiv-C中几乎所有的类都是继承自NSObject类,NSObject类中存在大量功能强大的方法。下面对NSObject类中的各种方法进行试验和介绍: 1....= str1"); } Objective-C中的继承 继承是is-a的关系,比如猫咪是一个动物,那么动物是父类,而猫咪是动物的子类。...2014-07-30 08:38:12.958 HelloOC[483:303] 我是富二代BILL`s son,我超喜欢飙车 Objective-C中的多态 多态简单的说就是对于不同对象响应同一个方法时做出的不同反应
id的含义是:指针,并可以指向任意类型的Objective-C对象,e.g.: id delegate 注意:以上声明没有用星号。id已经隐含了星号的作用。...4.在obj-c中,创见对象最常见的途径就是使用alloc和init,通常会将这两个消息写在一行代码中,并以嵌套的形式连续发送(Apple推荐写法): [[NSDate alloc] init];...对于这些类,相等的(equal)和相同的(identical)是两个概念。...15.C、C++、Objective-C这类语言的代码文件要经过两步才能完成编译。首先,预处理器(preprocessor)会读入并处理整个文件。...18.在Objective-C中,有三种途径可以实现回调。 a.目标-动作(Target-action):在应用开始等待前,要求“当X发生时,向指定的对象发送某个特定的消息。”
@代表“Objective-C”的标志,证明您正在使用Objective-C语言 Objective-C语言关键词,@property与@synthesize配对使用。...如: 1、在头文件中: C代码 @property int count; 等效于在头文件中声明2个方法: C代码 - (int)count; -(void)setCount:(int...copy: setter方法进行Copy操作,与retain一样 nonatomic: 禁止多线程,变量保护,提高性能 参数类型 参数中比较复杂的是retain和copy,具体分析如下: getter...并且,delegate 和 Outlet 应该用 weak 属性来声明。同时,如上一回介绍的 iOS 5 之前的版本是没有 __weak 关键字的,所以 weak 属性是不能使用的。...声明的分类 在 Objective-C官方文档 中的Property一章里有对类Property详细说明。
然后,再在thirdparty下建立名叫src_package,用来存放第三方库的源码包,如没有特别说明,第三方库默认均为automake编译和安装方式。...【automake编译和安装方式说明】 通常Linux系统自带automake编译工具,C/C++开源库一般都采用automake编译。...假设源代码库文件名为protobuf-2.4.1.tar.gz,则编译和安装操作步骤如下: 1) 将源代码包文件protobuf-2.4.1.tar.gz上传到Linux机上,这里假设上传到Linux...,tar解压参数请由xzf改成xjf b) 上述第9步不是必须的,但会是一个良好的Linux风俗,建议保持 c) 注意第5步,如果生成的静态库会被其它共享库使用,则可能需要为configure增加参数.../configure --prefix=/usr/local/protobuf-2.4.1 CXXFLAGS=-fPIC LDFLAGS=-fPIC d) 开源的C/C++库源代码包文件一般都采用类似于
装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
使用Objective-C解析HTML或者XML,系统自带有两种方式一个是通过libxml,一个是通过NSXMLParser。不过这两种方式都需要自己写很多编码来处理抓取下来的内容,而且不是很直观。...content]; [xpathParser release]; [data release]; 另外,还有一个类似的解决方案可以参考 ElementParser http://github.com/Objective3
The isa pointer of Instance and Class Firstly, let's have a look at the struct o...
properties of the Objective-C language, and as such is linked to by all Objective-C apps....The down low on Objective-C Runtime: The Objective-C Runtime is an open source library written in C...Objective-C的Runtime,是一个用C和汇编写的「开源库」,它为C添加了面向对象的特性,从而成就了Objrctive-C这门语言。...简单点理解,Runtime就是一个C和汇编写的代码库——是Objective-C之所以成为Objective-C的一个库。 用一图以助理解: ?...; 表示Objective-C中的属性。
二、循环引用 对象 A 和对象 B,相互引用了对方作为自己的成员变量,只有当自己销毁时,才会将成员变量的引用计数减 1。
简介 建立在C语言之上,可以混编C/C++代码,编写一个类需要二个文件: .h的头文件 .m的实现文件(如果是C/C++混编文件,文件后缀为.mm) 既然有头文件,所以很多人会拿它与C++进行类比,它最重要的三个特性是...苹果定义的类,一般类名最前面有二个字母,比如NSObject中的NS,UIKit中的UI,所以为了避免跟苹果定义的类产生冲突,自定义的类以三个字母开头,比如BNR这样 2) 方法的定义和调用 ?...方法分二种:实例方法、类方法,如上图所示,区别类方法和实例方法,主要是它的声明符:-、+ + (返回值类型) 类方法名 - (返回值类型) 实例方法名,需要先创建后再使用,比如这样:[[[Hello alloc...3) 基本数据类型 OC建立在C语言之上,所以C中的所有基本数据类型它都支持,比如:int、float、char… OC自身定义的数据类型,都包含在Foundation中了,类名以NS开头,比如:NSArray...、NSInteger、NSNumber,定义:NSString *myStr; 更多关于Objective-C的学习资料,推荐 Ry’s Objective-C Tutorial
(3) 维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。 有点: (1)实现了子系统与客户端之间的松耦合关系。
Unsafe Unretained: 有些不支持weak的属性,比如NSTextView,NSFont和NSColorSpace等,使用方法如下: @property (unsafe_unretained...在运行时,通过category添加的方法和通过原始class添加的方法没有区别。 除了可以给现有class添加方法,category也可以用来分割复杂class的各种实现。...extension和category功能类似,但是extension只可以给已知源码的class添加方法。...和class extension不同,associated reference 不影响原始class的定义和实现,所以说即便没有对原始数据的访问权限,也可以使用。...objc_setAssociatedObject NSArray和NSDictionary只可以用来收集OC对象,其它对象必须封装在OC对象之内才可以init到上述类型之中。
Objective-C++ C函数桥接 运行时 一、通过Objective-C++ Objective-C++是C++的超集,就如同Objective-C是C的超集,在OS X上同时被GCC和Clang...支持编译,能够不用C++来初始化OC对象和调用方法。...只要在C ++模块的实现中隐藏Objective-C header导入和类型,它就不会感染任何“纯”C ++代码。 .mm是Objective-C++的默认后缀名,Xcode会自动识别。...在.mm文件中,Objective-C代码和C++代码都可以正常编译运行。...MyClass c; double seconds = c.secondsSince1970(); 二、通过C函数来桥接 我们知道Objective-C和C++都是在C语言的基础上发展而来的语言,都能同时支持
一、利用class-dump来查看源文件 class-dump是一个逆向工具,可以用来查看未加固的APP的方法名和属性名 安装class-dump 从class-dump下载地址将dmg文件下载下来,将...Desktop/Payload/test.app是源文件路径, /Users/imac/Desktop/heads是要导出的头文件的路径 可以在head文件夹里看到包含第三方库的头文件,里面可以看到属性名和方法名...STRING_SYMBOL_FILE="func.list" HEAD_FILE="$PROJECT_DIR/$PROJECT_NAME/codeObfuscation.h" export LC_CTYPE=C...| sqlite3 $SYMBOL_DB_FILE } ramdomString() { openssl rand -base64 64 | tr -cd 'a-zA-Z' |head -c
原理和用法都类似于SQL查询中的where,作用相当于数据库的过滤取。主要用于从集合中分拣出符合条件的对象或者数据模型,也可以用于字符串的正则匹配.
Objective-C Runtime 最近在学习Runtime的知识,恰巧发现了这篇博客《Objective-C Runtime》,在此基础上,进行了些许补充说明,如有错误或其他想法,欢迎提出交流。...这就是 Objective-C Runtime 系统存在的意义,它是整个Objc运行框架的一块基石。 Runtime其实有两个版本:“modern”和 “legacy”。...我们现在用的 Objective-C 2.0 采用的是现行(Modern)版的Runtime系统,只能运行在 iOS 和 OS X 10.5 之后的64位程序中。...参考链接 原文:Objective-C Runtime Apple官方文档:Objective-C Runtime Programming Guide Apple开源代码:Objective-C Runtime...源码 Objective-C runtime之运行时的基本特点 Understanding the Objective-C Runtime 最后,附上Runtime的基本使用:《Objective-C
领取专属 10元无门槛券
手把手带您无忧上云