16.继承

1)不能和父类定义一样的变量

2)单一继承,不支持继承多个类

3)支持多层继承子类也可以被继承

17.实例变量修饰符

public:公开的,在其他类中也可以访问

protected:受保护的类型,只能在当前类和子类中访问

private:不能直接访问

.h文件中没有声明的变量和方法,只在.m文件中定义,不能被继承和使用

18.%@打印对象的地址,默认调用对象的description方法,可以重写此方法

19.多态:不同的对象以自己的方式响应相同名称方法的能力称为多态

父类指针指向子类的对象

20.类的本质是类对象

1)Class c1=[d class];Class c1=[d1 class];如果d和d1是同一个类的对象,那个c1和c2指向相同的地址

2)获取方式,通过实例对象获取Class c1=[d class];,通过类名获取Class c1=[Dog class]; 

3)类对象的使用,代替类名new对象

21.SEL s1=@selector(test)//手动把test方法包装成sel类型

[p performSelector:s1];//向test方法发送sel消息,这两句话相当于[p test];

22.点语法的本质是调用getter、setter方法,不是访问成员变量

对象.属性=...;//替换为set方法

...=对象.属性;//替换为get方法

23.@property的使用

写在声明文件中,相当于定义get、set方法声明

#import <Foundation/Foundation.h>

@interface Animal : NSObject
{
int _age;
} @property int age; //-(void)setAge:(int)age;
//-(int)age; @end

24.@synthesize的使用

写在实现文件中相当于注释部分的代码

#import "Animal.h"

@implementation Animal

@synthesize age;

//-(void)setAge:(int)age{
// self->age=age;//@synthesize age会自动新建一个age实例变量
//}
//-(int)age{
// return self->age;
//} @end

@synthesize age=_age;//指定实例变量名,不会操作默认的变量

相当于:

//-(void)setAge:(int)age{
// _age=age;
//}
//-(int)age{
// return _age;
//}

xcode4.4之后,可以只使用@property而不使用@systhesize,并且不用定义带有下划线的变量

操作的是带有下划线的实例变量,如果当前类没有下划线的实例变量,则系统会帮我们生成。注意该变量是私有的(相对的,隐藏的)子类看不到

@property的增强型,在.m文件中重写get、set方法,但是不能同时重写,只能重写一个

25.动态类型和静态类型

动态类型:父类的指针指向子类的对象

静态类型:

26.id的使用,id是一个万能指针,可以指向任何对象

NSObject和id都可以指向任何对象

NSObject对象会进行编译时检查(需要强制类型转换)

id不需要强制类型转换,id可以直接用

编译器看到id以后,认为是动态类型,不再检查

id obj=[Animal new];

27:动态绑定,内省

动态类型检测:

1)判断类型

1))判断某个对象是否是类的实例对象,或者子类的事例对象

BOOL isKind = [ani isKindOfClass:[Animal class]];(对象和类)

2))判断是否是这个类的事例,不管是否是这个类的子类的事例

isMemberOf(对象和类)

3))判断是否是子类的事例

isSubClassOfClass

BOOL isKind = [Dog isSubClassOfClass:[Animal class]];(类和类)

2)方法响应的检测

1))判断对象能否响应指定的方法:

respondsToSelector:方法的SEL

2))判断类能否响应指定的方法

instanceResponseToSelector:方法的SEL

3)响应方法

无参:performSelector:SEL

有一个参数:performSelector:SEL withObject:@"参数"

有两个参数:performSelector:SEL withObject:@"参数" withObject:@"参数2"

28.构造方法init,是一个对象方法,返回的是一个对象-调用init方法的对象

29.重写构造方法

-(instancetype)init{
self = [super init];
if(self){
_age=10;
}
return self;
}

Objective-C基础2的更多相关文章

  1. Objective—C基础学习总结

        1. (1)面向过程:一种以事件为中心的编程思想         (2)面向对象:一种以对象为中心的编程思想        2.get和set是用来访问和修改对象里的属性值           ...

  2. Objective C 基础

    1,字符串加@: 不加@的是C语言字符串. 加@的代表的是OC的NSString http://www.jikexueyuan.com/course/71_2.html 2,setValuesForK ...

  3. [置顶] IOS 基础入门教程

    IOS 基础入门教程 教程列表: IOS 简介 IOS环境搭建 Objective C 基础知识 创建第一款iPhone应用程序 IOS操作(action)和输出口(Outlet) iOS - 委托( ...

  4. Getting Started with Core Data

    Getting Started with Core Data Getting Started with Core Data Coreframework支持创建对象模型封装你的应用数据和逻辑满足MVC设 ...

  5. Automake

    Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...

  6. Objective-c——UI基础开发第十二天(相册展示)

    一.知识点 模仿新特性 UICollectionViewFlowLayout自定义布局 相册 瀑布流(淘宝购物之类的 二.复习 a.UICollectionView 和 tableview共享一套AP ...

  7. Objective-c——UI基础开发第十一天(UICollectionView)

    一.知识点 1.UICollectionView的dataSource .delegate 2.UICollectionView多组数据和单组数据的展示 3.UICollectionView.UICo ...

  8. Objective-c——UI基础开发第十天(自动布局)

    一.autoresizing 的使用(了解) 只能参照父控件 1.实现横竖屏幕切换,不能把控件的frame血丝,需要进行屏幕适配 2.需要参照父控件 use auto layout禁用 才会出现aut ...

  9. Objective-c——UI基础开发第九天(QQ好友列表)

    一.知识点: 1.双模型的嵌套使用 2.Button的对齐方式 3.优化UITableView的加载 4.layoutSubview的使用 5.cell的折叠代理 二.双模型的嵌套定义: 注意是将se ...

  10. Objective-c——UI基础开发第八天(QQ聊天界面)

    一.知识点: QQ聊天界面 双模型的使用(dataModel和frameModel) UITextField的使用 通知的使用 拉伸图片的两种方法(slicing/image对象的resizeable ...

随机推荐

  1. java 打印流(PrintStream)

    打印流(PrintStream):打印流可以打印任意类型的数据,而且打印流在打印数据之前会将数据转为字符串在进行打印 PrintStream可以接受文件和其他字节输出流,所以打印流是对普通字节输出流的 ...

  2. node.js中module.export与export的区别。

    对module.exports和exports的一些理解 可能是有史以来最简单通俗易懂的有关Module.exports和exports区别的文章了. exports = module.exports ...

  3. mysql导入大文件sql

    备份mysqldump mysqldump -u root -p ao2012 > /mnt/www/zq_ao2012/backup.sql 然后数据库密码 导入 mysql -h local ...

  4. Socket练习

    第一类方法 package socketLianXi; import java.io.IOException; import java.io.InputStreamReader; import jav ...

  5. Apache增加Basic Auth

    在.htaccess文件中增加 AuthUserFile /var/www/htpasswd/test.htpasswd AuthName EnterPassword AuthType Basic r ...

  6. .NET基于Redis缓存实现单点登录SSO的解决方案[转]

    一.基本概念 最近公司的多个业务系统要统一整合使用同一个登录,这就是我们耳熟能详的单点登录,现在就NET基于Redis缓存实现单点登录做一个简单的分享. 单点登录(Single Sign On),简称 ...

  7. PostgreSQL windows service启动失败

    from: http://stackoverflow.com/questions/1251233/unable-to-run-postgresql-as-windows-servicepg_ctl - ...

  8. HTML中添加背景音乐

    <audio controls="controls" height="100" width="100"> <source ...

  9. http获取图片信息

    一.安卓访问网络需要AndroidManifest.xml配置这样一个节点 <manifest> <uses-permission android:name="androi ...

  10. http协议中用于上传多个文件的 multipart 字段

    大家好,我是许飞,微软拼音的开发实习生.在网络编程中,经常用到从服务器上“下载”一些数据,有时却要向服务器“上传”数据.曾在一个原型中使用了“multipart/form-data”格式向Web服务器 ...