随笔分类 - Objective - C基础
1
摘要:学到现在, 我们很快就要结束OC的教程了, 讲完protocol, OC语法就全部学完了, 现在我们来看看什么protocol, 在OC中, 我们都知道要.h文件里是用来声明方法和成员变量,.m文件里是用来实现的, 也知道类别是给系统类扩充一些必要的方法, 那么有没有一种机制是用来给我们自定义的类声...
阅读全文
摘要:在前面我们讲过许多数据类型, 比如基本数据类型, 枚举, 结构体等等, 这次我们来讲最后一个OC中的最后一个数据类型, 那就是block, 在OC开发中,block有些类似函数指针, 但又不完全一样, 下面让我们来看看:例子:#import int sum(int a, int b){ ret...
阅读全文
摘要:在我们之前的手动引用计数中, 我们都知道在循环引用如果两边使用retain的话, 那么两个对象谁也不会释放谁, 那么在ARC中呢??? 其实也是一个道理, 前面我们知道了ARC的特性, 是使用强弱指针来判断对象是否要被释放, 那么循环引用是否也是一样呢? 下面让我们一起来看看:例子:#import ...
阅读全文
摘要:在我们之前的项目中, 或多或少都会有手动引用计数的存在, 看到apple出了自动引用计数, 再看看自己的项目, 就有一种砸电脑的冲动, 别着急~~其实apple很为我们开发者着想, 旧项目一样可以转成ARC, 废话少说, 直接上图:后面的操作不需要我讲了吧? 傻瓜式的操作, 一直下一步, 直到完成为...
阅读全文
摘要:在我们之前的项目中, 或多或少都会有手动引用计数的存在, 看到apple出了自动引用计数, 再看看自己的项目, 就有一种砸电脑的冲动, 别着急~~其实apple很为我们开发者着想, 旧项目一样可以转成ARC, 废话少说, 直接上图:后面的操作不需要我讲了吧? 傻瓜式的操作, 一直下一步, 直到完成为...
阅读全文
摘要:前言:在前面, 我们学习了手动引用计数, 遵循了写一个alloc就写一个release的原则, 也学习了autorelease内存池, 在创建对象的时候调用autorelease方法, 就会在内存池销毁的时候就会对对象进行一次release操作, 但autorelease不能随便乱用, 对多占用内存...
阅读全文
摘要:前面我们学了OC内存管理的手动引用计数, 一个alloc, 一个release, 对象的释放由我们自己所决定, 在这里应该会有人问, 这样子运用手动引用计数好累, 有没有简单一点的方法, 答案肯定是有的, 现在我们就来看看第一个简单一点的方法,autorelease方法.首先我们来看看以前所写的例子...
阅读全文
摘要:在前面, 我们知道了OC的内存管理以及@property的参数, 其实还有一个叫做循环引用, 其实所谓的循环引用很简单, 就是两个类中, 你包含我, 我包含你, 这个就叫循环引用, 比如下面这个例子:#import #import "Car.h"@interface Person : NSObjec...
阅读全文
摘要:在前面我们利用了@property来简洁内存管理的代码, 但里面涉及到一些参数有很多人都不明白, 现在我们来一起看看~~1.set方法内存管理相关的参数* retain : release旧值,retain新值(适用于OC对象类型)* assign : 直接赋值(默认,适用于非OC对象类型, 也就是...
阅读全文
摘要:在前面, 我们基本上讲完了OC的内存管理, 但如果按照我们之前那样子做, 我们需要写非常非常多的代码, 在我们实际开发中, 不可能就只有那么一两个对象, 所以我们需要写的set方法和get方法就一大堆, 比如下面这个例子:#import #import "Book.h"@interface Pers...
阅读全文
摘要:在前面, 我们对OC的内存管理基本上有了一个认识, 也知道了多个对象的内存管理是如何处理, 虽然在前面的多对象内存管理符合内存管理的原则, 其实还有一定的小bug, 今天我们就来看看如何解决这个bug.例子:#import #import "Car.h"@interface Person : NSO...
阅读全文
摘要:在前面, 我们知道了OC中内存管理的机制, 引用计数, 也对引用计数有了基本的认识, 有些人可能会说, 引用计数而已, 不就是+1, -1么, 有多难? 的确, 在单个对象中的操作的确不难, 但如果是在多个对象之间操作呢? 这个就难了, 为什么这么说? 下面我们来看看示意图:在示例图中, 有两个对象...
阅读全文
摘要:前言在我们OC中, 有一个东西是重中之重的知识点, 那就是内存管理, 什么是内存管理呢? 其实内存管理是我们app在运行的时候所使用的内存大小, 在iOS中, 给我们应用设定了一个固定的内存值, 一旦超过这个值, 系统就会给app发送内存警告, 如果这个警告不处理, 那么就会强制关闭应用, 就是我们...
阅读全文
摘要:在这之前, 我们回想一下, 我们知道实现我们所需要的功能, 就要调用某些方法, 那么这些方法又是怎么样调用的呢? 原理是怎么样的? 让我们一起来探讨一下看看~~例子:#import @interface Person : NSObject- (void)test;@end@implementatio...
阅读全文
摘要:前面讲了一些比较抽象的东西, 类的加载过程以及类别的加载过程, 这次我们来讲讲NSObject自带description方法, 这个方法有两个, 一个是实例方法, 一个是类方法, 下面让我们一起来探究探究吧:例子:#import @interface Person : NSObject@proper...
阅读全文
摘要:补充一个加载过程的知识点, 那就是类别的加载过程, 类别的加载过程有一些特殊, 废话不多说, 直接上例子:#import @interface Person : NSObject+ (void)load;@end@implementation Person+ (void)load{ NSLog...
阅读全文
摘要:在前面, 我们知道了类的本质其实也是一个对象, 是Class类型, 那么类的加载过程是如何的呢?? 其实类的加载过程非常简单,先加载父类然后再加载子类, 而且每一个类就只会加载一次, 下面让我们来看看~例子:#import @interface Person : NSObject+ (void)lo...
阅读全文
摘要:在前面, 我们学习了OC的很多语法, 还有书写规范, 在这过程中肯定会有人有很多疑问, 今天我们就来讲讲其中的一个东西, 类的本质, 类的本质其实也是一个对象, 为什么这么说呢, 下面让我们来一起探讨一下:例子:#import @interface Person : NSObject@propert...
阅读全文
摘要:前面我们基本认识了类别是用来怎么用的, 那么现在我们来讲讲在实际开发中的一些事项, 其实在实际开发中, 类别用的最多的是给系统类添加方法的, 因为我们自己自定义的类灵活性比系统类要高, 而系统的类是固定死的, 如果给它添加方法, 我们只能选择使用类别, 下面让我们来看看~~例子:#import @i...
阅读全文
摘要:在我们开发中, 如果要给一个类扩充一些方法, 那么我们应该会选择使用继承, 但问题来了, 如果是使用继承, 那么我们就又要创建对象, 写更多的代码, 更加的麻烦了, 而类别(Category)就可以为我们解决这一类的问题.下面让我们来一起来看看例子:#import @interface Person...
阅读全文
1