Objective-c学习
PSH_yfjiang
这个作者很懒,什么都没留下…
展开
-
继承和类别的区别
在Objective-C中,给一个类扩展一个其它方法,有两种实现方式:类别和继承。1.继承Inherit这个是面向对象语言都有的一个特性,子类会继承父类的方法和属性。对于以下情况,无法使用类别,必须使用继承。1)新扩展的方法与原方法同名,但是还需要使用父类的实现。因为使用类别,会覆盖原类的实现,无法访问到原来的方法。2)扩展类的属性,这个类别无法做到。示例代码:转载 2016-11-10 12:56:49 · 308 阅读 · 0 评论 -
非正式协议和正式协议的区别
这两个概念困扰我很久了,一直都很像搞清楚到非正式协议和正式协议有什么区别和联系,下面结合网上的资料和自己的看法谈谈这个问题。一、非正式协议显然这个名词是相对于正式协议而言的。在解释非正式协议之前,先引用两段话:1、在《Cocoa设计模式》第六章类别的6.3.2把类别用于非正式协议一节中,这样写到:非正式协议通常定义为NSObject的类别。类别接口中指定的方法可能会或者可能不会被框架类实际地实现。非转载 2016-11-10 14:39:21 · 1407 阅读 · 0 评论 -
快速枚举
快速枚举 快速枚举的特性使得我们可以使用简洁的语法来安全、有效地枚举集合中的内容。for…in 快速枚举的特性使得我们可以对集合中的元素进行枚举。其用法如下: for ( 类型 变量 in 表达式 ) { 处理语句 } 或者是 类型 变量; for ( 变量 in 表达式 ) { 处理语句;转载 2016-11-16 09:58:58 · 232 阅读 · 0 评论 -
objective-C 的内存管理之-实例分析
objective-C 的内存管理之-实例分析注:这是《Objective-C基础教程》一书上的实例,但是原书限于篇幅,分析得比较简单,初次阅读看得比较费劲,这里展开详细讨论一下。场景:有二个类Car和Engine,即“汽车”和“引擎”。先来看最初的版本:Engine.h1234567#import <Cocoa/Cocoa.h> @interface Engine : NSObjec转载 2016-11-29 10:10:33 · 291 阅读 · 0 评论 -
Objective-C中@private、@protected、@public 解析
Objective-C中,类的实例化变量的范围有@private、@protected、@public。他们代表的意思和C++中相同,只是前面添加了一个@符号。下面介绍一下他们代表的范围:指令意思@private作用范围只能在自身类@protected作用范围在自身类和继承自己的子类,什么都不写,默认是此属性。@public作用范围最大,在任何地方下面是官方的图:具体的可以参考:http:转载 2016-11-14 11:27:47 · 315 阅读 · 0 评论 -
[nil release]能够执行,但是没有效果
1.内存泄露一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显式释放的内存。应用程序一般使用malloc,calloc,realloc等函数(C++中使用new操作符)从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。转载 2016-11-30 16:27:46 · 249 阅读 · 0 评论 -
如何使用#import #include与@class
一、#include与#import区别 1. #include import和#include同样可以将头文件引入到我们需要的文件中,那么它们有什么区别呢?当我们在代码中对同一个文件进行两次#include的时候会报错:因为#include相当于拷贝头文件中的内容,所以会报重复定义的错误。例如: 有a.h、b.h、c.h三个头文件, b.h引用包含a.h, c.h中同时引用包含a.h和b.转载 2016-11-15 11:23:27 · 375 阅读 · 0 评论