Objective-C基础2
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的更多相关文章
- Objective—C基础学习总结
1. (1)面向过程:一种以事件为中心的编程思想 (2)面向对象:一种以对象为中心的编程思想 2.get和set是用来访问和修改对象里的属性值 ...
- Objective C 基础
1,字符串加@: 不加@的是C语言字符串. 加@的代表的是OC的NSString http://www.jikexueyuan.com/course/71_2.html 2,setValuesForK ...
- [置顶] IOS 基础入门教程
IOS 基础入门教程 教程列表: IOS 简介 IOS环境搭建 Objective C 基础知识 创建第一款iPhone应用程序 IOS操作(action)和输出口(Outlet) iOS - 委托( ...
- Getting Started with Core Data
Getting Started with Core Data Getting Started with Core Data Coreframework支持创建对象模型封装你的应用数据和逻辑满足MVC设 ...
- Automake
Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...
- Objective-c——UI基础开发第十二天(相册展示)
一.知识点 模仿新特性 UICollectionViewFlowLayout自定义布局 相册 瀑布流(淘宝购物之类的 二.复习 a.UICollectionView 和 tableview共享一套AP ...
- Objective-c——UI基础开发第十一天(UICollectionView)
一.知识点 1.UICollectionView的dataSource .delegate 2.UICollectionView多组数据和单组数据的展示 3.UICollectionView.UICo ...
- Objective-c——UI基础开发第十天(自动布局)
一.autoresizing 的使用(了解) 只能参照父控件 1.实现横竖屏幕切换,不能把控件的frame血丝,需要进行屏幕适配 2.需要参照父控件 use auto layout禁用 才会出现aut ...
- Objective-c——UI基础开发第九天(QQ好友列表)
一.知识点: 1.双模型的嵌套使用 2.Button的对齐方式 3.优化UITableView的加载 4.layoutSubview的使用 5.cell的折叠代理 二.双模型的嵌套定义: 注意是将se ...
- Objective-c——UI基础开发第八天(QQ聊天界面)
一.知识点: QQ聊天界面 双模型的使用(dataModel和frameModel) UITextField的使用 通知的使用 拉伸图片的两种方法(slicing/image对象的resizeable ...
随机推荐
- php+ajax 登录注册页面
主要是登录注册功能,前端后台验证没有什么,这个大家可以自己加上去,比如过滤啊,正则啊等 还是先放图吧 这是登录及注册界面 点击注册切换到注册界面,点击登录切换到登录界面 <!DOCTYPE h ...
- c#向数据库插入较大数据(SqlBulkCopy)
因为要向数据库添加一些数据,数据量较大 1.使用sql语句批量提交速度较慢 2.用事物批量提交,速度一般 3.用SqlBulkCopy方法写入数据,速度较快 /// <summary> / ...
- oracle PL/SQL高级特性
触发器:存放在数据库中,并被隐含执行的存储过程. 由触发事件,触发条件,触发操作组成. DML触发器:指定触发器时机(before or after),触发事件(insert , delete, u ...
- 读书笔记:const和readonly、static readonly 那些事
C#中表示不变的量(常量)的两种形式:const 和readonly const 是静态常量 readonly 是动态常量 严格的来讲:const 应该称为常量 而readonly 则应称为只读变量. ...
- 解决国内npm依赖包安装慢的问题
可以通过 npm config set registry http://registry.npm.taobao.org命令设置镜像服务器为阿里巴巴镜像服务器,速度会快很多,亲测有效.
- Stack的c实现
用c语言实现stack的初始化,push,pop和Clear操作 #include<stdio.h> #include<stdlib.h> #include<assert ...
- .net资源链接
http://aspalliance.com/ http://www.hotscripts.com/ http://www.dotnet247.com http://stackoverflow.com ...
- oracle 中的cascade
级联删除,比如你删除某个表的时候后面加这个关键字,会在删除这个表的同时删除和该表有关系的其他对象
- Python学习【第七篇】基本数据类型
基本数据类型 数字 2是一个整数的例子. 长整数 不过是大一些的整数. 3.23和52.3E-4是浮点数的例子,E标记表示10的幂.在这里,52.3E-4表示52.3*10-4. (-5+4j)和(2 ...
- iostat 命令
iostat -x 1 10 Linux 2.6.18-92.el5xen 02/03/2009 avg-cpu: %user %nice %system %iowait %steal %idle 1 ...