OC第六天笔记2016年03月21日(周一)A.M

  1. 在OC中,我们通过使用协议和分类来实现多继承的效果。
  2. 协议只能声明方法,而不能有任何实例变量。
  3. 声明协议:

@protocal protocolName<protocol ,…>

@optional //可选择的

@require//必须的  默认

@end

eg:

1 @protocal rules<NSObject >
2
3
4
5 @interface abc: NSObject <rules>
6
7 @end

//协议中只有方法声明,没有实例变量

在类中的实现文件实现。 在main 函数利用消息机制调用。

4. 分类:给原有类增加方法,不能是实例变量。

1 @interface NSString (detail)
2
3 @end

分类的目的:原有类的方法不足,原有类型方法名太复杂,不易于理解和记忆。

分类是原有类的一部分。

分类中不能有继承,但是可以遵循协议。

5. 其它特性:performSelector

//函数的实参 不带参数的

-(id) performSelector:(SEL)aSelector;

//函数的实参 带一个参数

-(id) performSelector:(SEL)aSelector withObject:(id)

anObjectAsParameter

//函数的实参 最多传俩参数

-(id) performSelector:(SEL)aSelector withObject:(id)

anObjectAsParameter withObject:(id)anotherObjectAsParameter;

6. OC不能声明静态实例变量。可以声明静态全局变量。

时间: 2024-10-13 16:34:34

OC第六天笔记2016年03月21日(周一)A.M的相关文章

OC第七天笔记2016年03月21日(周一)P.M

1. 使用NsCompare 或者isEqualToNumber来实现NsNumber对象的比较. NsCompare:比较大小关系 isEqualToNumber:是否相等 长度:[str length] 查找子串: NSRange rr = [str rangeOfString:@”ll”]; If(rr.location == NSNotFound){ NSLog(@”ll is not in str ”); } else { NSLog(@”ll is in str”);}

OC第七天笔记2016年03月22日(周二)A.M

1. 可变字符串 NSMutableString* mstr = [[NSMutableString alloc] initWithCapacity:10]; 增 删 改 替换 //[mstr length] [mstr insertString:@"http://" atIndex:0]; //第一个参数:即将要插入的字符串 //第二个参数:插入的位置(下标) NSLog(@"%@",mstr); //http://www.baidu.com [mstr inse

OC第八天笔记2016年03月23日(周三)A.M

1.     NSFileManager: ----------------------main--------------------------- 1 <font size="3">#import <Foundation/Foundation.h> 2 #import "Student.h" 3 int main(int argc, const char * argv[]) { 4 @autoreleasepool { 5 6 //1.

OC第四天笔记2016年03月18日(周五)A.M

在OC中没有多继承 继承方式公有继承:派生类对象可以当做基类对象来使用 类中实例变量的默认权限为受保护,方法默认权限公有. 类中方法都是虚方法 在OC继承中,基类的所有成员都可以被派生类继承. 在派生类中定义一个原型和基类相同的方法,称派生类重写了此方法. id代表任意类型, 在程序运行期间才会确定id所代表的类型. 使用类方法创建的对象会被自动放入“自动释放池”中,所以不需要再手动release. 派生类中扩展实例变量时,不能与基类部分实例变量同名.

OC第九天笔记2016年03月24日(周四)A.M

1.  打开ARC:-fobjc-arc 关闭ARC:-fno-objc-arc 2.  在ARC中内存回收由编译器完成 声明对象之后,未将对象置为nil,则对象作用域结束时,空间才会被回收:如果将对象置为nil,则对象的空间会立即回收. 3.  __strong __weak __strong:强引用,拥有某一块堆空间的所有权.默认. __weak:弱引用,仅拥有使用权. 一旦强引用置为nil,弱引用会被自动置为nil. 声明属性:如果属性为对象实例变量,赋值方式strong,否则使用weak

C++第六天笔记2016年02月23日(周二)A.M

1.    赋值运算符的重载: 什么情况下需要赋值运算符的重载? 当类中有指向对空间的指针变量时,需要重载赋值运算符以实现深拷贝. 浅拷贝问题: 当类中有指向对空间的指针变量时,前拷贝有可能会导致二次删除或内存泄露问题. 重载赋值操作符分5步:a=a; 1.1  判断是否为自赋值à自赋值则直接跳至第5步. 1.2  删除旧的堆空间(指针指向的旧的堆空间) 1.3  申请新的堆空间 1.4  内容拷贝 1.5  return* this; 浅拷贝: 1 #include <iostream> 2

C++第十四天笔记2016年03月10日(周四) A.M

1. 线性结构:链表和数组 数组:可以访问任意位置的元素.添加删除操作相对麻烦. 链表:添加删除效率相对较高.只能从第一个元素开始访问. 访问较多:数组.添加删除较多:链表. 数组:元素类型 数组名[元素个数]; 2.  如何创建链表: 链表:链表中的每一个元素称为节点. 节点:数据域(存储数据)和指针域(存储下一节点的地址编号). 3.  双向链表:数据域和指针域(包含两个,其中一个指向下一个节点,另外一个指向上一个节点) 4.  头结点:链表中的第一个节点 空链表:链表中无任何节点. 1 #

C++第十二天笔记2016年03月04日(周五) A.M

1.    多重继承 在多继承中,如果派生类的多个基类出现重名函数,为了避免出现歧义,则可以在派生类中重写这些重名函数. 2.    菱形继承问题,成员冗余(成员变量的冗余,无问题.成员函数的冗余,可能会出现问题).函数调用出现歧义. 使用虚继承解决菱形继承问题. 3.    模板 函数模板:有类型参数的函数. 如何定义函数模板: 1 template <typename T> 2 void print(T,_t) 3 { 4 cout<< _t << endl; 5

iPhone 第一天笔记2016年03月28日(周一)A.M iPhone开发入门

1. 切换home键:command + shift + h; 2. info.plist  Application does not run in background -> YES ****************************main****************************** 1 <font size="3">#import <UIKit/UIKit.h> 2 #import "AppDelegate.h&quo