首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Objective-C中的集合

下面详细的介绍Objective-C中的集合以及每个集合的用法,学过其他面向对象编程语言的小伙伴们看到OC的集合会有种莫名的亲切感,理解起来问题不大,可以类比Java中的集合去学习...在Objective-C中的集合中主要包括不可变的数组--NSArray,  可变的数组--NSMutableArray,   不可变的字典--NSDictionary,    可变的字典--NSMutableDictionary...NSArray             数组是有序对象的集合,用来存储对象的有序列表,在OC中数组中必须存的是对象,不能是基本数据类型,若想存入基本数据类型,必须先把数据类型转换成对象,然后再存入集合中...NSArray也是OC中的一个对象,使用NSArray也需要进行实例化,前面的博客在的初始化中提到了便利初始化函数和便利构造器,在NSArray中也少不了这两样东西我们可以通过NSArray的便利初始化函数或者便利构造器进行...在OC中给我们提供啦一个专门来把基本数据类型封装成对象,这个就是NSNumber.     ​    ​    ​1.

1.1K70
您找到你想要的搜索结果了吗?
是的
没有找到

Objective-C Runtime:深入理解与对象

其实最主要的表现就是Objective-C将很多静态语言在编译和链接时做的事情放到了运行时去做,它在运行时实现了对、方法、成员变量、属性等信息的管理机制。...与之对应实现的就是Objective-C的Runtime机制。 Objective-C的Runtime目前有两个版本:Leagcy Runtime和Moden Runtime。...同时,在Objective-C语言中,本身也是一个对象,作为对象时isa指针指向元(Meta Class),后面会详解; super_class:指向该类的父,如果该类已经是根(NSObject...中变量的信息,一般认为Objective-C不支持变量。...注意,返回的列表不包含父的成员变量和属性; Objective-C不支持往已存在的中添加实例变量,因此不管是系统库提供的,还是我们自定义的,都无法动态添加成员变量; 当通过运行时来创建一个的时候

1.2K40

objective-C 的OOP(上)--定义、继承及方法调用

kBlueColor } ShapeColor; //定义“几何形状矩形区域”结构 typedef struct { int x,y,width,height; } ShapeRect; 然后再定义基Shape...,注意:在obj-C中,定义一个通常分成二部分,一部分是".h"的文件,用来申明有哪些成员(也称为的定义文件,类似于接口),另一部分是".m"的文件,用来提供具体实现 Shape的申明部分如下:...All rights reserved. // #import "Shape.h" //注:因为Circle不需要扩展其它方法,所以这里也只要一个空壳 @interface Circle : Shape...bounds.x,bounds.y,bounds.width,bounds.height,[super getColorName:fillColor]); } @end 注:上面展示了在obj-C中如何调用父的方法...同时我们也看到了,创建一个的实例用“[ new]”来完成。 最后附上文件结构图:

1.2K80

Objective-C】05-第一个OC的

说明:这个Objective-C专题,是学习iOS开发的前奏,也为了让有面向对象语言开发经验的程序员,能够快速上手Objective-C。...如果你还没有编程经验,或者对Objective-C、iOS开发不感兴趣,请忽略。学习本专题之前,建议先学习C语言专题。 OC是一门面向对象的语言,因此它也有、对象、静态\动态方法、成员变量的概念。...一、语法简介 1. 在Java中,我们用1个.java文件就可以描述清楚一个;在OC中,一般用2个文件来描述一个: 1> .h:的声明文件,用于声明成员变量、方法。...二、用Xcode创建第一个OC的  1.右击项目文件夹或者文件,选择"New File" ? 2.选择Cocoa的"Objective-C class" ? 3.输入名和选择父 ?...* Student.h是的声明文件,Student.m是的实现文件 * 默认情况下,这2个文件的文件名跟名一致 * 编译器只会编译.m文件,并不会编译.h文件 三、第一个的代码解析 1.Student.h

842100

Objective-C笔记

头文件包含,类型,函数和常数的声明。 .m 源代码文件。这是典型的源代码文件扩展名,可以包含 Objective-C 和 C 代码。 .mm 源代码文件。...带有这种扩展名的源代码文件,除了可以包含Objective-C和C代码以外还可以包含C++代码。仅在你的Objective-C代码中确实需要使用C++或者特性的时候才用这种扩展名。...class) 是面向对象语言中最重要的一个概念,Objective-C同样支持。...发送给对象的所有消息都会动态分发,这样有利于实现Objective-C的多态行为。...不过在Objective-C 2.0引入了新的语法以声明变量为属性, 并包含一可选定义以配置访问方法的生成。属性总是为公共的,其目的为提供外部类访问(也可能为只读) 的内部变量的方法。

90540

Objective-C 入门笔记

简介 建立在C语言之上,可以混编C/C++代码,编写一个需要二个文件: .h的头文件 .m的实现文件(如果是C/C++混编文件,文件后缀为.mm) 既然有头文件,所以很多人会拿它与C++进行类比,它最重要的三个特性是...因为OC不提供命名空间,所以命名上要特别注意了,不然很容易覆盖/冲突而导致很多未知的问题。...苹果定义的,一般名最前面有二个字母,比如NSObject中的NS,UIKit中的UI,所以为了避免跟苹果定义的产生冲突,自定义的以三个字母开头,比如BNR这样 2) 方法的定义和调用 ?...方法分二种:实例方法、方法,如上图所示,区别方法和实例方法,主要是它的声明符:-、+ + (返回值类型) 方法名 - (返回值类型) 实例方法名,需要先创建后再使用,比如这样:[[[Hello alloc...、NSInteger、NSNumber,定义:NSString *myStr; 更多关于Objective-C的学习资料,推荐 Ry’s Objective-C Tutorial

63230

Objective-C Runtime 详解

与Runtime交互 Objc 从三种不同的层级上与 Runtime 系统进行交互,分别是通过 Objective-C 源代码,通过 Foundation 框架的NSObject定义的方法,通过对 runtime...在Objective-C Runtime Reference中有对 Runtime 函数的详细文档。...,名,成员变量,方法,缓存,还有附属的协议 PS:OBJC2_UNAVAILABLE之类的宏定义是苹果在 Objc 中对系统运行版本进行约束的黑魔法,为的是兼容非Objective-C 2.0的遗留逻辑...,但我们仍能从中获得一些有价值的信息,有兴趣的可以查看源代码 Objective-C 2.0 的头文件虽然没暴露出objc_class结构体更详细的设计,我们依然可以从Objective-C 1.0 的定义中小窥端倪...而Objective-C Runtime中使用了Non Fragile ivars来避免这个问题 使用Non Fragile ivars时,Runtime会进行检测来调整中新增的ivar的偏移量。

1.1K20

Objective-C Runtime详解

Objective-C Runtime 最近在学习Runtime的知识,恰巧发现了这篇博客《Objective-C Runtime》,在此基础上,进行了些许补充说明,如有错误或其他想法,欢迎提出交流。...在一些计算机语言的原理中,一个和元层次结构可以更自由的组成,更深元链和从单一的元继承的更多的实例化的Objective-C方法 是使用元的根本原因,在其他方面试图在隐藏元。...而Objective-C Runtime中使用了Non Fragile ivars来避免这个问题 使用Non Fragile ivars时,Runtime会进行检测来调整中新增的ivar的偏移量。...参考链接 原文:Objective-C Runtime Apple官方文档:Objective-C Runtime Programming Guide Apple开源代码:Objective-C Runtime...源码 Objective-C runtime之运行时的基本特点 Understanding the Objective-C Runtime 最后,附上Runtime的基本使用:《Objective-C

1.7K60

objective-C中的Class(类型),Selector(选择器SEL),函数指针(IMP)

今天在园子里看到了一篇牛文“Objective-C 2.0 with Cocoa Foundation--- 5,Class类型,选择器Selector以及函数指针 ”,讲得十分精彩,忍不住把它的代码加上注释整理于此...个人体会:obj-C中的“Class类型变量”比c#中的Object基还要灵活,可以用它生成任何类型的实例(但是它又不是NSObject)。..."牛"的基 Cattle.h #import @interface Cattle : NSObject { int legsCount; } -...void(*setSkinColor_Func)(id,SEL,NSString*); //定义一个IMP方式的函数指针(obj-C中推荐的方式) IMP say_Func; //定义一个...,所以肯定能运行) } else //如果aCattle即不是Bull也不是Cattle的实例 { NSString *yourClassName = [aCattle className

1.8K51

Objective-C RunLoop 详解

CFRunLoopObserverRef 其中 CFRunLoopModeRef 并没有对外暴露,只是通过 CFRunLoopRef 的接口进行了封装。...RunLoop 有5个的关系 一个 RunLoop 包含若干个 Mode,每个 Mode 又包含若干个 Source/Timer/Observer。...RunLoop 的实际应用举例 AFNetworking AFURLConnectionOperation 这个是基于 NSURLConnection 构建的,其希望能在后台线程接收 Delegate...AsyncDisplayKit AsyncDisplayKit 是 Facebook 推出的用于保持界面流畅性的框架,其原理大致如下: UI 线程中一旦出现繁重的任务就会导致界面卡顿,这类任务通常分为3:...其中前两操作可以通过各种方法扔到后台线程执行,而最后一操作只能在主线程完成,并且有时后面的操作需要依赖前面操作的结果 (例如TextView创建时可能需要提前计算出文本的大小)。

1.5K80
领券