iOS - OC 与 C 互相操作】的更多相关文章

前言 在 Swift 语言中,我们可以使用 Objective-C.C 语言编写代码,我们可以导入任意用 Objective-C 写的 Cocoa 平台框架.Objective-C 框架或 C 类库. 1.在 Swift 中使用 Objective-C.C 代码 1.1 在 Swift 项目中使用 Objective-C.C 代码 1> 在 Swift 项目中创建 OC/C 的 .h 和 .m / .c 文件,文件中的格式为其本有的格式. 2> Xcode 提示是否创建 Objective-C…
前言 在 Objective-C 语言中,我们可以使用 C.Swift 语言编写代码,我们可以导入任意用 C.Swift 写的 Cocoa 平台框架.C 框架或 Swift 类库. 1.在 C 中使用 Objective-C 代码 1.1 在 Objective-C 项目中的 C 函数中使用 Objective-C 代码 1> 在 .m 文件中定义函数指针. static ViewController *selfClass = nil; // 函数指针指向本身 selfClass = self;…
IOS学习笔记25—HTTP操作之ASIHTTPRequest 分类: iOS2012-08-12 10:04 7734人阅读 评论(3) 收藏 举报 iosios5网络wrapper框架新浪微博 ASIHTTPRequest是一个第三方开源项目,在现在的IOS应用中多使用到这个开源类库来提供网络操作,相比于SDK提供的网络操作类库,ASIHTTPRequest使用上更加方便.效率更高,同时功能也非常强大.这是ASIHttpRequest的官网:http://allseeing-i.com/AS…
1.运行时的使用 向分类中添加属性 // 包含运行时头文件 #import <objc/runtime.h> /* void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy) id objc_getAssociatedObject(id object, const void *key) 参数: object :属性的持有者 key :属性的键值 value…
1.类 1)根类:因为类 NSObject 是层次结构的最顶层,因此称为根类. 可以将类称为子类(subclass)和父类(superclass),也可以将类称为子类和超类. 2)分类/类别(category):允许以模块的方式向现有类定义添加新的方法(默认不能添加实例变量).扩展自己或他人以前实现的类,使它适合自己的需要. 分类的名称括在类名之后的一对圆括号"( )"中. @interface QCStudent (Print) @end @implementation QCStud…
ios+oc面试题     浅复制和深复制的区别?//浅拷贝和深拷贝答案:浅层复制(copy):只复制指向对象的指针,而不复制引用对象本身.//通过对象的指针来访问这个对象深层复制(mutableCopy):复制引用对象本身意思就是有个A对象,复制一份后得到A_copy对象后,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源还是只有一份,那如果我们对A_copy执行了修改操作,那么发现A引用的对象同样被修改,这其实违背了我们复制拷贝的一个思想.深复制…
OC中文件操作,在之前的文章中,已经接触到了文件的创建了,但是那不是很具体和详细,这篇文章我们就来仔细看一下OC中是如何操作文件的: 第一.首先来看一下本身NSString类给我们提供了哪些可以操作文件路径名的方法 [objc]  view plaincopy   8.    9. #import <Foundation/Foundation.h>   10.    11. int main(int argc, const charchar * argv[]) {   12.     @aut…
OC NSFileHandle(文件内容操作) 初始化 [NSFileHandle fileHandleForUpdatingAtPath:@"data.txt"]; //fileHandleForUpdatingAtPath 可读写 //fileHandleForReadingAtPath 只读 //fileHandleForWritingAtPath 只写 读到文件尾部 [fileHandle readDataToEndOfFile]; 根据偏移量读取文件内容 [fileHandl…
OC NSFileManager(文件路径操作) 初始化 NSFileManager * fm = [NSFileManager defaultManager]; 获取当前目录 [fm currentDirectoryPath]; 更改当前目录 [fm changeCurrentDirectoryPath:@"/Users/xubaoaichiyu/Desktop"] 创建新目录 [fm createDirectoryAtPath:@"data" withInter…
iOS OC语言原生开发的IM模块,用于项目中需要原生开发IM的情况,具备发送文字.表情.语音.图片.视频等完整功能,包含图片预览视频播放等功能,此项目将会长期更新如有问题可以提出,我的邮箱:fshmjl@aliyun.com,我将尽快解决; 项目地址:https://github.com/fshmjl/RChat 效果图如下 项目介绍 项目中对输入框等模块功能进行了封装,方便复用或重写 输入框模块                  InputBox输入框功能页面            KInp…
iOS 使用FMDB进行数据库操作 https://github.com/ccgus/fmdb [摘要]本文介绍iOS 使用FMDB进行数据库操作,并提供详细的示例代码供参考. FMDB 使用方法 ARC 和 MRC 项目中使用 ARC 还是 MRC,对使用 FMDB 都没有任何影响,FMDB 会在编译项目时自动匹配. 使用 在 FMDB 中有三个重要的类: FMDatabase:是一个提供 SQLite 数据库的类,用于执行 SQL 语句. FMResultSet:用在 FMDatabase…
前言 @interface NSKeyedArchiver : NSCoder @interface NSKeyedUnarchiver : NSCoder 在 OC 语言中,归档是一个过程,即用某种格式来保存一个或多个对象,以便以后还原这些对象.通常,这个过程包括将(多个)对象写入文件中,以便以后读取该对象.可以使用归档的方法进行对象的深复制. 采用归档的形式来保存数据,该数据对象需要遵守 NSCoding 协议,并且该对象对应的类必须提供 encodeWithCoder: 和 initWit…
前言 iOS 5.0 之后,提供了新的枚举定义方式,定义枚举的同时,可以指定枚举中数据的类型. typedef NS_OPTIONS(_type, _name) new; -> 位移的,可以使用 按位或 设置数值 typedef NS_ENUM(_type, _name) new; -> 数字的,直接使用枚举设置数值 位移型枚举: 使用 按位或 可以给一个参数同时设置多个 "类型".在具体执行的时候,使用 按位与 可以判断具体的 "类型". OC 中 6…
1.iOS 开发技术体系 iOS 开发技术体系图: 层级 主要框架 Cocoa Touch UIKit 等 Media Core Graphics .OpenGl ES.Core Animation 等 Core Services Core Data.Foundation 等 Core OS Accelerate Framework.External Accessory Framework.Security Framework.System 等 从图中可以看到,要想编写成型的产品,需要的不仅仅是…
1.OC 基本内存管理模型 1.1 自动垃圾收集 在 OC 2.0 中,有一种称为垃圾收集的内存管理形式.通过垃圾收集,系统能够自动监测对象是否拥有其他的对象,当程序执行需要空间的时候,不再被引用的对象会自动释放.iOS 运行环境并不支持垃圾收集,在这个平台开发程序时并没有这方面的选项.在 OS X 10.8 中垃圾收集已不再推荐使用. 1.2 自动释放池 自动释放池(autoreleasepool)的机制是它使得应用在创建新对象时,系统能够有效的管理应用所使用的内存.自动释放池可以追踪需要延时…
ASIHTTPRequest是一个第三方开源项目,在现在的IOS应用中多使用到这个开源类库来提供网络操作,相比于SDK提供的网络操作类库,ASIHTTPRequest使用上更加方便.效率更高,同时功能也非常强大.这是ASIHttpRequest的官网:http://allseeing-i.com/ASIHTTPRequest/ 以下是官方对ASIHttpRequest的解释: What is ASIHTTPRequest? ASIHTTPRequest is an easy to use wra…
先来简单介绍一下BlockBlock是什么?苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,Block可以在任何时候执行. Block和函数的相似性:(1)可以保存代码(2)有返回值(3)有形参(4)调用方式一样. Block 底层实现 定义一个简单的block   我们再给a赋值为20,此时打印出来a 的值还是10   但当我们在第一次给a 赋值时,前面加上__block 的时候,则打印出来20.   那么为什么加上__block 后 就打印出20了呢,这个原理是什么…
1.需要理解的知识            通常程序在运行中或者程序结束之后,需要保存一些信息,而且需要持久化存储信息,比如登陆信息.视频播放记录.收藏记录等等,那么我们可以采用以下几种方式对数据进行持久化保存.                    1.文件            2.plist             3.归档    1.1单例模式        单例模式是一种常用的设计模式.在应用这个模式时,单例对象的类必须保证只有一个实例存在,而且自行实例化并向整个系统提供这个实例.如果希…
网上已经有方法了,我这里就是抄了下,原文链接 http://bj007.blog.51cto.com/1701577/649413 http://blog.csdn.net/u010124617/article/details/28856711?utm_source=tuicool 这里的dispatch_once_t就是一个用于标记的整型,没什么特殊之处. 用dispatch_once实现单例的最大好处就是线程安全!!这个经常会被面试问到,建立数据库和网络操作的单例时,确实存在线程安全问题.…
iOS沙盒机制 iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. 1.1.每个应用程序都有自己的存储空间 1.2.应用程序不能翻过自己的围墙去访问别的存储空间的内容 1.3.应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行.     通过这张图只能从表层上理解sandbox是一种安全体系,应用程序的所有操作都要通过这个体系来执行,其中核心内容是:s…
1.RunLoop 1)运行循环: 运行循环在 iOS 开发中几乎不用,但是概念的理解却非常重要. 同一个方法中的代码一般都在同一个运行循环中执行,运行循环监听 UI 界面的修改事件,待本次运行循环结束时,统一将界面的修改渲染出来. 点击事件触发结束后立即结束本次运行循环. 作用: 保证程序不退出. 负责监听所有事件,例如:手势触摸,时钟触发,网络加载数据完成等. 特性: 没有事件时,会休眠(省电),一旦监听到事件,会立即响应. 每一个线程都有一个 runloop,但是只有主线程的 runloo…
1.Category 1)分类/类别(category): 允许以模块的方式向现有类定义添加新的方法(默认不能添加实例变量).用以扩展自己或他人以前实现的类,使它适合自己的需要. 分类的名称括在类名之后的一对圆括号 "( )" 中. @interface QCStudent (Print) @end @implementation QCStudent (Print) @end 分类文件名使用符号"+"来分隔类和分类的名字(Xcode 会自动生成). QCStuden…
前言 相对于 Java,OC 语言是一门古老的语言了,而它又是一门不断发展完善的语言.一些新的编译特性,为 OC 语言带来了许多新的活力.在 Xcode7 中,iOS9 的 SDK 已经全面兼容了 Objective-C 的一些新特 性和新功能.这些功能都只作用于编译期,对程序的运行并没有影响,因此,它可以很好的向下进行兼容,无缝的衔接低版本的 iOS 系统,如果可以将这些新特性都应用于开发,开发效率和代码质量,相比之前会有一个很大的提升. 1.可选类型检测 在 swift 语言中,通过 ! 和…
前言 copy:需要先实现 NSCopying 协议,创建的是不可变副本. mutableCopy:需要实现 NSMutableCopying 协议,创建的是可变副本. 浅拷贝:指针拷贝,源对象和副本指向的是同一个对象.对象的引用计数器 +1,其实相当于做了一次 retain 操作. 深拷贝:内容拷贝,源对象和副本指向的是两个不同的对象.源对象引用计数器不变,副本计数器设置为 1. 只有不可变对象创建不可变副本(copy)才是浅拷贝,其它都是深拷贝. 在 iOS 中并不是所有的对象都支持 cop…
前言 采用 SQLite 数据库来存储数据.SQLite 作为一中小型数据库,应用 iOS 中,跟前三种保存方式相比,相对比较复杂一些. 注意:写入数据库,字符串可以采用 char 方式,而从数据库中取出 char 类型,当 char 类型有表示中文字符时,会出现乱码.这是因为数据库默认使用 ASCII 编码方式.所以要想正确从数据库中取出中文,需要用 NSString 来接收从数据库取出的字符串. sqlite 的方法: sqlite3 *db 数据库句柄,跟文件句柄很类似 sqlite3_s…
1.Sandbox 沙箱 iOS 为每个应用提供了独立的文件空间,一个应用只能直接访问为本应用分配的文件目录,不可以访问其他目录,每个应用自己独立的访问空间被称为该应用的沙盒.也就是说,一个应用与文件系统的交互绝大部分都被限制在它自己的应用沙盒内. 1)在新 App 被安装时,安装器会为应用创建一系列角色不同的容器(container). iOS 8.0 之后,bundle 目录和沙盒目录 (Data) 是分开的.iOS 7.0 及以前版本 bundle 目录和沙盒目录 (Data) 是在一起的…
前言 @interface NSTimer : NSObject 作用 在指定的时间执行指定的任务. 每隔一段时间执行指定的任务. 1.定时器的创建 当定时器创建完(不用 scheduled 的,添加到 runloop 中)后,该定时器将在初始化时指定的 ti 秒后自动触发. scheduled 方式: 创建并启动定时器. 默认将时钟以 NSDefaultRunLoopMode 模式添加到运行循环. 发生用户交互的时候,时钟会被暂停. /* + (NSTimer *)scheduledTimer…
前言 @interface NSString : NSObject <NSCopying, NSMutableCopying, NSSecureCoding> @interface NSMutableString : NSString 1.不可变字符串的创建 // 直接创建不可变字符串 /* 在 OC 中,使用 @"XXX" 格式定义的字符串,是保存在常量区的,只要内容相同,内存地址就一致 */ NSString *string1 = @"bei jing hua…
1.常见文件扩展名 .c C 语言源文件 .cc..cpp C++ 语言源文件 .m Objective-C 源文件 .mm Objective-C++ 源文件 .h 头文件 .pl Perl 源文件 .o Object(编译后的)文件 .app 可运行的应用程序(相当于 windows 中的 .exe) .dmg OS X 上的光盘文件压缩包(相当于 windows 中的 ISO) .pkg OS X 应用程序安装包(相当于 windows 中的 exe\msi 等) .ipa iOS 应用程…
前言 在 Swift 语言中,我们可以使用 Objective-C.C 语言编写代码,我们可以导入任意用 Objective-C 写的 Cocoa 平台框架.Objective-C 框架或 C 类库. 1.在 Swift 中使用 Objective-C.C 代码 1.1 在 Swift 项目中使用 Objective-C.C 代码 1> 在 Swift 项目中创建 OC/C 的 .h 和 .m / .c 文件,文件中的格式为其本有的格式. 2> Xcode 提示是否创建 Objective-C…