OC学习
挟飞仙以遨游
学生
展开
-
OC代理传值
delegate(代理)是OC中的一种模式,可以用来传递值和配置值(这里我们只讨论传值的过程)。设想有两个界面,其中一个界面要改变另一个界面的数据,这里我们就会用到代理模式,将改变数据的那个界面作为被改变界面的代理,通过代理来返回给后者被改变的数据。 房屋中介设想我们现在需要去租房子,我们需要一个中介,这个中介就是一个代理,他去帮我们完成我们的需求。现在我们来实现这个场景。//中...原创 2018-07-30 20:08:51 · 682 阅读 · 0 评论 -
OC block回调数据
除了用delegate进行代理传值,block也可以实现数据的传递,并且实现起来更简单。 一、房屋中介设想我们现在需要租房子,我们要先找一个中介,让他来帮助我们。//Agent.h#import <Foundation/Foundation.h>typedef void (^RentHouseOkBlock) (NSString * result);//首先类型...原创 2018-08-01 12:52:20 · 899 阅读 · 0 评论 -
OC block
block是一种块语法,类似于函数指针,它可以封装一段代码,被封装的代码在block被调用的时候才会执行。 一、block的定义#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { //设置一个没有返回值 没有参...原创 2018-07-31 20:32:39 · 204 阅读 · 0 评论 -
objective-c如何定义一个类
类的声明的一些规则1.类名首字母大写2.创建类的文件名和类名相同 现在我们创建一个Person类@interface Person:NSObject{ NSString * name;//这是一个字符串对象 NSInteger age;//这是一个整型变量 NSString * address;//这是一个字符串对象}@end @int...原创 2018-07-25 21:13:22 · 1667 阅读 · 0 评论 -
OC中函数声明前面的‘+’号和‘-’号
函数声明前的 ‘-’号(学习记录,如果有不妥的地方,还请不吝赐教)方法前面一个减号表示这个方法是一个实例方法也叫对象方法,顾名思义是只有用对象调用的方法也就是必须对象存在了才能去调用这个方法。@interface Person:NSObject{ NSString * name;//这是一个字符串对象}-(void)setName:(NSString *)aName...原创 2018-07-26 15:57:19 · 3569 阅读 · 1 评论 -
OC中的属性变量
在OC中定义一个类时,如果我们将变量全部作为成员变量都写在大括号里面,由于成员变量默认是protected的,因此在外部需要使用这些变量的时候就会变得很棘手,我们可能想到用get和set方法来获取和设置其中的值,但是若我们为每一个变量都这样做,那么代码就会变得十分冗余,以至于给bug提供藏身之所。因此,objective-c为我们提供了十分有效的解决方案--属性变量。 @property关...原创 2018-07-26 21:06:16 · 205 阅读 · 0 评论 -
@property的属性关键字(@property 的参数)
//@property (nonatomic, strong) //@property (nonatomic, copy) //@property (nonatomic, weak) //@property (nonatomic, assign) 在声明属性变量时,后面括号里面的参数往往是我们所要考虑的,那么该使用哪一个参数呢,下面的一篇转载的文章将向我们说明一、assig...转载 2018-07-27 11:34:20 · 611 阅读 · 0 评论 -
重写父类的init方法与自定义init方法
在为对象分配了内存空间之后要初始化对象时,我们希望初始化的结果是对象中的成员变量是有值的,但是默认情况下,init方法是不会给予这些成员变量以我们想要的值的,这个时候我们就应该重写或者自定义init方法。重写父类的init方法-(instancetype)init{ self = [super init];//super 告诉编译器从当前对象所属类的上一级去查找(父类) ...原创 2018-07-27 14:11:17 · 1957 阅读 · 0 评论 -
OC内存管理
OC的内存管理分为ARC和MRR两种机制,前者是系统自动去管理内存的,后者是我们主动去管理内存的。在这里我们主要讨论的后者。 引用计数 retainCount无论是ARC还是MRR都是通过OC的引用计数机制来管理内存的(也就是retainCount) ,每当一个对象被创建起来时,它的引用计数就加一,当某个对象的引用计数为0时,说明这个对象就没有被使用了,也就是说这个对象的拥有者就为0了...原创 2018-07-28 16:21:16 · 569 阅读 · 0 评论 -
OCMRR模式下重写属性变量的set方法和get方法
由于MRR模式下系统是不会自动释放掉我们不用的对象的,所以对于频繁使用的属性变量,我们就应该重写他们的set来避免重复赋值(但是不能同时重写set和get方法,否者系统就不会为我们创建 _属性变量名 的成员变量)。 重写属性变量的set方法有时候我们需要第一时间知道数据改变了,这个时候我们就需要重写set方法。#import "Person.h"@implementati...原创 2018-07-29 08:37:57 · 447 阅读 · 0 评论 -
OC 类别
有时我们会为某一个类扩展方法或者属性,我们的处理方式可能有两种:1.直接在这个类中扩展。2.采用继承的方式然后再进行扩展。(效率不高)OC 为我们提供了一种比较简单的方式--类别(category),它能让我们在原有类的基础上扩展出新的方法和属性。 一、分类// NSString+DateToString.h#import <Foundation/Foundat...转载 2018-08-02 10:41:10 · 488 阅读 · 0 评论