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

Objective-C中的集合类

下面详细的介绍Objective-C中的集合类以及每个集合类的用法,学过其他面向对象编程语言的小伙伴们看到OC的集合类会有种莫名的亲切感,理解起来问题不大,可以类比Java中的集合类去学习...在Objective-C中的集合类中主要包括不可变的数组--NSArray,  可变的数组--NSMutableArray,   不可变的字典--NSDictionary,    可变的字典--NSMutableDictionary...NSArray也是OC中的一个对象,使用NSArray也需要进行实例化,前面的博客在类的初始化中提到了便利初始化函数和便利构造器,在NSArray中也少不了这两样东西我们可以通过NSArray的便利初始化函数或者便利构造器进行...以数组的形式返回:-(NSArray *) allObjects;     ​    ​    ​    ​    ​    ​随进获取集合中的元素:-(id) anyObject;     ​    ​    ​    ​...OC中的集合类中是不能放基本数据类型的,那么我们如何把基本数据类型封装成对象呢?

1.1K70

Objective-C中NSArray类的解读

Objective-C中NSArray类的解读     NSArray数组类是Objective-C语言中常用的也是重要的一个类,除了开发中常用到的一些基础功能,NSArray及其相关类中还封装了许多更加强大的功能...:(NSUInteger)index; //初始化方法 - (instancetype)init; //通过C语言风格的数组创建NSArray对象 需要注意,C数组中需要为Objective对象,cnt...; //像数组中追加一个元素 这个方法会返回一个新的数组 - (NSArray *)arrayByAddingObject:(ObjectType)anObject; //像数组中追加一组元素...; //返回一个字符串,将数组中的元素以separator为分隔符进行组合 /* NSArray * array = @[@1,@2,@3,@4]; 将打印1,2,3,4 NSString * res...C数组中 objects参数需要为分配好空间的C指针 - (void)getObjects:(ObjectType __unsafe_unretained [])objects range:(NSRange

1.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    objective-C 的内存管理之-实例分析

    注:这是《Objective-C基础教程》一书上的实例,但是原书限于篇幅,分析得比较简单,初次阅读看得比较费劲,这里展开详细讨论一下。 场景:有二个类Car和Engine,即“汽车”和“引擎”。...然后就是description方法(相当于c#中Object的toString()方法),用于返回一个描述自身的字符串。最后就是dealloc方法,用于清理自身所用的资源。...解决它的途径有二种: 1、去掉Car.m类dealloc中的[engine release],但是本着“自家的孩子自己管”的原则,不推荐这种不负责任的做法。...2、在setEngine方法中,人工调用[newEngine retain]方法,让引擎的引用计数加1,这样正好可抵消Car.m类dealloc方法中[engine release]带来的影响(一加一减...2.2 刚才1.1中所说的问题依然存在,即Car在init方法中预置的默认引擎engine0,始终被无视了,未得到解脱。

    53080

    objective-C 的OOP(下)-类(static)方法、实例方法、overwrite(覆写)、属性(property)

    ,就表示这一个是类方法(static 方法),而-(void)表示这是一个实例方法 实现部分: 注意:下面的 -(id) init 即为构造函数。...对应的,还有一个-(void)dealloc方法用来释放资源(类似于析构函数或c#中的dispose()方法)-注:dealloc方法以后在内存管理中详细学习,这里先不管它。...foodName; -(void) setMarried:(BOOL)m; -(BOOL) Married; @end 实现部分: 注意下面的:setMarried 与 Married 就是obj-C中属性的标准写法...; if (self==[super init]){ sex = FALSE; married = FALSE; } return (self); } //overwrite父类中的toString...; //调用类的“静态”方法 [Human toString]; NSLog(@"----------------"); //创造一个Human的实例 Human *man = [

    74870

    Objective-C中的属性机制

    Objective-C 2.0中的属性机制为我们提供了便捷的获取和设置实例变量的方式,也可以说属性为我们提供了一个默认的设置器和访问器的实现。...在学习OC中属性之前我们先要知道为什么要为变量实现getter和setter方法,我们先来了解一下实例的作用域。     实例变量的作用域如下:         1....@protected :受保护的,该实例变量只能在该类和其子类内访问,父类protected的实例变量在子类中是private的默认是protected;         3....@private: 私有的,该实例变量只能在该类的内部访问;         因为要用protected 或者 private来隐藏类的内部细节,用类或者对象是没法直接访问被隐藏的细节的,所以要用getter...和setter来访问被隐藏的实例变量,OC中的属性机制就为我们提供了默认的getter和setter方法。

    1.3K70

    Objective-C中runtime机制的应用

    Objective-C中runtime机制的应用 一、初识runtime         Objective-C是一种动态语言,所谓动态语言,是在程序执行时动态的确定变量类型,执行变量类型对应的方法的...因此,在Object-C中常用字符串映射类的技巧来动态创建类对象。因为OC的动态语言特性,我们可以通过一些手段,在程序运行时动态的更改对象的变量甚至方法,这就是我们所说的runtime机制。...,这里将返回一个Ivar类型的指针     //class_copyIvarList方法可以捕获到类的所有变量,将变量的数量存在一个unsigned int的指针中     Ivar * mem = class_copyIvarList...,你或许会遇到一个问题,ARC下,编译器不允许你将int类型的值赋值给id,在buildset中将Objective-C Automatic Reference Counting修改为No即可。...六、动态的为类添加方法         这个runtime机制最强大的部分要到了,试想,如果我们可以动态的向类中添加方法,那将是一件多么令人激动的事情,注意,这里是动态的添加,和类别的最大不同在于这种方式是运行时才决定是否添加方法的

    40850

    Objective-C中的继承和多态

    在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中的多态     ​    ​多态简单的说就是对于不同对象响应同一个方法时做出的不同反应...;     ​多态的另一个例子: Animal是父类,子类有Cat 和 Dog,子分别重写了父类中的eat方法;实例化对象的时候可以用下面的方法: 1 2 3 4 5 6 7 Animal *animal

    1.2K80

    Objective-C中的Block(闭包)

    学习OC中的block之前也小担心一下,Block在OC中属于高级的部分,心里有又有个疑问:学起来难不难?...下面就通代码来认识一下OC中的block的使用。   ...有返回值的 1 int (^sumBlock) (int, int);             无返回值的  1 void (^myBlock)(int, int);  2.给block块赋值            ...2.成员变量在block中的使用     ​    ​成员变量在block中的使用是加上self->a使用的,所以在声明成员变量的时候加不加__block,在成员函数中的代码块中都可以访问修改;     ​    ​...noBlock_p = 0x100006828 总结: 对于一个、多个成员变量,不管是否用__block修饰(用不用都没任何影响),block结构体会生成一个成员 :self,并且会引用成员变量所属的对象实例

    1.5K90

    Objective-C中的类目,延展,协议

    Objective-C中的类目(Category),延展(Extension),协议(Protocol)这些名词看起来挺牛的,瞬间感觉OC好高大上。...一.Objective-C中的类目(Category)         在Objective-C比其他OOP的编程语言多了个类目,在OC中除了用继承来扩充类的功能函数外我们还可以用类目来实现。...        1.给已有的类扩充方法             在Xcode中新建CategoryTest类,在新建类中声明两个实例变量,在实现类中重写description方法,打印输出两个实例变量的值...二.Objective-C中的延展(Extension)         简单的说匿名类目就是延展,在延展中定义的方法是类私有的方法只能在类的内部调用,定义延展的方式就是把类目中括号中得名字省略掉,括号保留这就是延展...其实在延展中定义的方法不是真正的私有方法和C++, Java中得方法还有所区别,在类初始化的文件中引入相应延展的头文件,其延展对应的方法也是可以访问的。

    1.1K80

    Objective-C中的委托(代理)模式

    简单的说代理就是把相应的功能交给实现接口的相应的类中来解决。在OC中没有接口该如何实现代理呢?...前面的博客中笔者说提了一句,在OC中的协议和Java中的接口极为相似,都是只声明方法而不去实现,方法的实现在OC中交个遵循协议的类,而在Java中方法的实现交给实现接口的类。...by ludashi on 14-8-7. //  Copyright (c) 2014年 Mr.li....; } @end          3.包租公妥啦以后我们就开始找中介公司啦,中介公司首先得符合我们的协议(在java中就是要实现我们之前的接口),在中介公司中因为要和包租公建立合作关系所以用到了包租公的类.../实例化包租公 Landlord *ludashi = [Landlord new]; //实例化中介 HouseSaler *agent = [HouseRent new];   //用户选择代理公司

    1.3K90

    Objective-C中的单例模式

    ​    ​单例模式算是设计模式中比较简单的一种吧,设计模式不是只针对某种编程语言,在C++, Java, PHP等其他OOP语言也有设计模式,笔者初接触设计模式是通过《漫谈设计模式》了解的。...不过在23种设计模式里面单例模式还是算比较好理解的, 那么在OC中又是怎么来表示单例模式的呢?下面会结合着代码,理解一下OC中得单例模式。     ​    ​...首先得了解什么是单例模式,用大白话说,单例模式就是在程序中这个类只对应着一个实例,这就是单例模式,单例模式一般用全局静态对象来实现。...下面我们会建立一个生成单例的类SingletonClass,在实现文件中定义各种方法来实现我们的单例模式。     ​    ​...= nil;     ​    ​2.上面的静态变量是定义在实现文件中的所以是私有的,要想获取该类的实例得有个getInstance方法来获取实例,在给静态变量分配内存空间之前首先要判断是否已经分配过啦

    1.9K70

    Objective-C中的Block回调模式

    如果 读者之前用过SSH框架的话,看到OC中的Block回调,会感觉非常的亲切,和Java中的接口回调像极了。还是那句话,上些Block的回调代码最为直接。...15 16 17 18 19 20 //  ComponentBlock.h //  Memory //  Created by ludashi on 14-8-19. //  Copyright (c)...,为了实现组件的封装,我们用延展来隐藏我们组件要用到的方法,在延展中声明了我们要使用的组件,然后再实现部分进行组件的初始化和编写组件中要调用的代码块,代码块中的参数由组件提供,而控制器只提供业务逻辑控制...,在控制器中我们需要 启动我们要使用的组件,也就是组件中的runBlock方法。...,执行代码块     [self.component runBlock]; }   @end     ​    ​5.Block回调的测试:在mian函数中进行控制器的实例化和启动控制器,代码如下:

    1.7K50

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

    今天在园子里看到了一篇牛文“Objective-C 2.0 with Cocoa Foundation--- 5,Class类型,选择器Selector以及函数指针 ”,讲得十分精彩,忍不住把它的代码加上注释整理于此...个人体会:obj-C中的“Class类型变量”比c#中的Object基类还要灵活,可以用它生成任何类型的实例(但是它又不是NSObject)。...而选择器SEL与函数指针IMP,如果非要跟c#扯上关系的话,这二个结合起来,就点类似c#中的反射+委托,可以根据一个方法名称字符串,直接调用方法。...) void(*setSkinColor_Func)(id,SEL,NSString*); //定义一个IMP方式的函数指针(obj-C中推荐的方式) IMP say_Func; //定义一个类...Bull与Cattle类中都有,所以肯定能运行) } else //如果aCattle即不是Bull类也不是Cattle类的实例 { NSString *yourClassName = [aCattle

    1.8K51
    领券