- 博客(15)
- 问答 (2)
- 收藏
- 关注
原创 代理模式
对扩展开放,对修改封闭代理delegation是一种定义对象之间关系的设计模式,如果一个对象的行为由另一个对象定义或者协助完成,那后者就是前者的代理被代理者将操作委托给其代理代理模式解耦了被代理类和代理类代理模式的实现 //Window.h@protocol WindowDrawDelegate<NSObject>-(void)draw;@end//Window.h@interfa
2017-03-05 16:48:49 192
原创 协议 protocol
协议: 一系列不属于任何类的方法列表,在其中声明的方法可以被任何类实现(类似于c++的抽象类,即接口)可以完成抽象类的功能,完成不同类的信息交换协议声明和实现协议的名字必须唯一,协议只需声明,并在遵守协议的类中进行实现@protocol 协议名@optional//可以实现也可以不实现的方法@required//默认//必须实现的方法@endl---------------------
2017-03-05 12:53:47 296
原创 分类Category
如何修个一个无法得到源码的类的方法? 如何把类的方法分组? 如何把类的实现分散到多个源文件?分类的定义#import"原类名.h"@interface 原类名(分类名)//声明方法(不能有实例变量)@end#import"原类名+分类名.h"@implementation 原类名(分类名)//声明方法(不能有实例变量)@end分类和继承的对比:分类只能有属性和方法,不能增加实例变量
2017-03-05 12:02:10 217
原创 动态多态
多态:相同接口,不同实现 相同接口:方法的签名、参数、返回值相同 不同实现:具体实现的内容不同动态多态包括:动态类型识别动态绑定动态加载动态类型识别@interface A:NSObject-(void)draw;@end@interface B:A-(void)draw;@end@interface C:B-(void)draw;@end@interface D:NSO
2017-03-04 12:08:21 472
原创 内存管理
三种内存管理机制:引用计数、ARC(自动引用技术)、垃圾回收(在iphong和ipad中不能用)每个对象有一个或多个所有者,所有权表示对其指向的对象的引用计数>=1当使用alloc new copy mutableCopy 创建对象时,拥有对象所有权 计数+1retain +1 retain count 为引用计数当使用完之后需要放弃所有权 release,语句中一定要包括
2017-03-01 21:37:30 142
原创 self super
self相当于this,它的值可改变, 当一个方法调用同类中的另一个方法时,self不可省略super和self指向相同的receiver,但super是要到父类方法列表找对应方法, 只是编译器指示符,不能赋值,而self可以赋值(例如对象的初始化)//复数相加complex.h-(Complex*)add:(Complex*)a{ Complex* c = [[Complex al
2017-03-01 21:29:50 165
原创 存取器方法、属性声明
setter getter 方法-(void)setWidth:(double)aWidth;-(double) width;-(void)setHeight:(double)aHeight;-(double) height;//[rectangle setWidth:10];//NSLog(@“%g”,[rectangle width];rectangle.width = 10;N
2017-03-01 21:25:39 432
原创 oc中类的声明、定义
类的声明和定义#import<Foundation/Foundation.h>XYZPerson.h@interface Person:NSObject//数据成员NSString *name;//属性声明@property NSString *firstName;@property (readonly)NSString *lastName;@property NSNumber *ye
2017-03-01 21:14:03 263
原创 oc语言的特点以及对象初始化
oc语言特点没有命名空间namespace不支持多重继承(可以使用协议实现多继承)不支持运算符重载、不支持内联函数、没有const和static同一个类里方法不能同名,但类方法和实例方法名字可以一样对象不掉用方法,而是相互传递信息(message passing)[receiver message](recever一定是对象(对象指针)message就是方法的名字和方法所需实参)oc都是
2017-03-01 21:01:59 351
原创 类的继承
继承在OC中没有多继承,只有多重继承;只有public继承(不同于c++)所有类型都有公共基类NSObject通过继承可以:继承父类增加本类实例变量和方法(子类不能和父类同名)覆盖父类的方法方法的覆盖与c++的不同点在于:在使用覆盖时,不需要在头文件声明,只需要直接实现oc都在堆区分配内存,而执行操作目标都是指针指向的对象,而不是指针本身覆盖NSObject基类NSObject
2017-03-01 15:55:43 217
原创 继承派生,多态
继承与派生 Software reusability1.能通过对象直接访问的只有public成员2.私有成员只能为自己所用(必须通过父类的公有函数间接调用) (保护成员可以通过子类函数调用) public protected
2017-02-28 15:28:16 245
原创 运算符重载,数据与对象如何转换
运算符重载 operator成员重载第一个参数this指针,友元重载第一个参数不是this指针3运算符重载函数中必须有一个类对象参数,所以一般单目的重载为友元,双目的为成员数据间的转换 (int)89.5------------------------------------------------------------------------------
2017-02-28 15:03:21 220
原创 静态成员,友元,模板
静态成员同类的多个成员实现数据共享(全局变量破坏封装性,但静态成员要注意作用域)●静态数据成员1.只能在类体外初始化,通过类名引用(而不是对象)2.在类外可以用对象引用公共静态数据成员,也可用类名引用静态数据成员3.私有静态数据成员必须通过公共成员函数引用(公共成员函数可以引用静态和非静态数据成员)●静态成员函数1.可被对象或者类调用(一般用类Box::)2.静态成
2017-02-19 12:07:42 360
原创 指针与对象指针
指针指针变量:存放地址的变量。一般变量存放的是数据本身,而指针变量存放的是数据的地址。结构体指针:类似于对象指针(结构体与类的区别:若不指定public和private,结构体默认为公共,类默认为私有)对象指针:对象存储空间的起始地址1.指向对象的指针:定义一个指针变量,用来存放对象的地址。class Time{…}Time *p;//定义p为指向Time类对象
2017-02-14 11:33:25 1009
原创 构造函数
无参构造函数对类的对象进行初始化(对数据成员赋初始值)是一个好的习惯,用构造函数来实现。使具体对象有确定内容。Time{public:Time()//声明无参构造函数Time:Time(){a=0; b=0; c=0;}// 定义构造函数 Time t1;t1.settime()1.实例化类对象时自动调用构造函数,建立一个对象,就执行且执行一次;2.
2017-02-14 11:25:04 278
空空如也
error LNK2019: 无法解析的外部符号
2017-02-17
无法解析的外部符号 1 个无法解析的外部命令
2017-02-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人