Objective C 基础教程
复合
使用复合可组合多个对象,使之人工协作。
会同时使用继和复合来创建自己的类。
编程中的复合就好像音乐中的作曲一样;将多个组件组合在一起配合使用。
在Objective-C中,复合是通过包含作为实例变量的对象指针实现的。
@interface Unicycle : NSObject
{
Pedal *pedal;
Tire *tire;
}
@end
pedal 和tire通过复合的方式组成了Unicycle(独轮车)
Car 程序
如何搭建汽车模型。
CarParts 包含在主程序mainCarParts.m中。
#import <Foundation/Foundation.h>
@interface Tire : NSObject
@end
@implementation Tire
- (NSString *) description
{
return (@"I am a tire. Ilast a while");
}
@end
Tire类中唯一的方法是description,没有在接口中声。
Cocoa神奇的帮助
自定义NSLog()
通过NSLog()可以使用%@格式符来输出对象.
%@会询问参数列表中相应的对象以得到这个对象的描述。
从技术上讲,就是NSLog()给这个对象发送描述消息,然后对象的description方法生成一个NSString并返回。
在类中添加description方法就可以自定义NSLog()如何输出对象
在自定义的description方法中,你可以选择返回一个字面值NSString.如@"I am a cheese Danish Object"
,也可以构造一个描述该对象所有此类消息的字符串。
在Cocoa中,NSArray类管理的是对象集合。
它的description
方法调度
当代码发送消息时,Objetive C的方法调度程序将在当前类中搜索相应的方法。
如果高度程序无法在接收消息的对象类中找到相应的方法,它就在该对象的超类中进行[。
[shape setFillColor:kRedColor] Objective -c 方法调度程序将查找接收该消息的对象Circle类有一个指向其它代码的指针,
消息
实例变量
创建一个新类时,其对象首先从自身的超过类中继承实例变量,然后添加它们自己的实例变量。
@interface RoundedRectagnle : shape
{
int radius;
}
@end
内存布局
继承在子类和超类之间建立了一种"isa"关系, 所以NSobject的实例变量称为isa
使用更具体种类的对象,称为多态
每个方法调用都获得一个名为self的隐藏参数,它是一个指向接收消息的对象的指针方法使用self参数来查找它们要使用的实例变量 ,
转载于:https://www.cnblogs.com/yushunwu/archive/2012/08/08/2627597.html
Objective C 基础教程相关推荐
- Objective C基础教程——Xcode工程创建
Objective-C只不过是拥有一些附加特性的C语言.本文将构建第一个Objective-C程序,同时介绍一些关键的附加特性. ##2.1 最简单的Objective-C程序 我们来写一个最简单的H ...
- NLTK01 《NLTK基础教程--用NLTK和Python库构建机器学习应用》
01 关于NLTK的认知 很多介绍NLP的,都会提到NLTK库.还以为NLTK是多牛逼的必需品.看了之后,感觉NLTK对实际项目,作用不大.很多内容都是从语义.语法方面解决NLP问题的.感觉不太靠谱. ...
- C Primer Plus基础教程(1)— 初步认识C语言
C Primer Plus基础教程(1)-初步认识C语言 一.C语言的起源 1972年,贝尔实验室的丹尼斯・里奇( Dennis Ritch)和背・汤普进( Ken Thompson)在开发UNX操作 ...
- Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现
自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注.虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭 ...
- [SQL基础教程] 1-5 表的删除和更新
[SQL基础教程] 1-5 表的删除和更新 表的删除 语法 DROP TABLE <表名>; 法则 1-12 删除的表无法恢复 表定义的更新 语法 ALTER TABLE<表名> ...
- python 包用法_Python 基础教程之包和类的用法
Python 基础教程之包和类的用法 这篇文章主要介绍了 Python 基础教程之包和类的用法的相关资料, 需要的朋友可以参考下 Python 是一种面向对象.解释型计算机程序设计语言,由 Guido ...
- Spring Cloud Alibaba 基础教程:Nacos 生产级版本 0.8.0
Spring Cloud Alibaba 基础教程:Nacos 生产级版本 0.8.0 昨晚Nacos社区发布了第一个生产级版本:0.8.0.由于该版本除了Bug修复之外,还提供了几个生产管理非常重要 ...
- Python培训基础教程都教哪些
根据相关数据统计,目前学习Python技术的同学大多数是零基础,都是从其他行业转型来学习的,那么Python培训基础教程都教哪些呢?好不好学呢?来看看下面的详细介绍. Python培训基础教程都教哪些 ...
- 深度学习之Pytorch基础教程!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:李祖贤,Datawhale高校群成员,深圳大学 随着深度学习的发展 ...
最新文章
- C#实现MVC模式简要方法(2)
- 浏览器直接连接mysql_在IE中直接连接SQL数据库_MySQL
- (十)装饰器模式详解(与IO不解的情缘)
- php网站不能访问,php怎么不登录不能访问
- python论文摘要_python新玩法:用python进行文章摘要拿取,只需要一行代码
- 俄罗斯黑客入侵冬奥会系统,还甩锅给朝鲜?
- Web API-DOM-滚动事件、加载事件和元素大小和位置
- mysql连接池cp_BeeCP
- js面向对象写法及栈的实现
- 【python基础学习必备小手册(适合新手)详细教程】
- 前端开发的几种常用的编辑器
- fc安卓模拟器_RA替代计划(上)—3DS的全能模拟器太难用?推荐几个替代品给你...
- STM32使用大彩屏程序总结(二)
- Qt程序移植到ARM
- ctf php 流量分析题,CTF平台hackit题目分析与解答
- “五年饮冰,难凉热血”,一名专科生的求学历程
- 中国目前还未掌握的核心技术有哪些?(无图)
- 开始使用TreeATE
- IEEE1588(PTP)-1-PTP与NTP之间的异同
- 【顶】利用分子分母有理化或者平方开方解题的典型及一道待解决的问题
热门文章
- vue 页面使用百度地图
- SageMaker使用托管容器训练本地网络模型
- linux 备份数据,LINUX下备份数据
- 统计数组中每个数字出现的次数_剑指Offer(二十八) 数组中次数出现超过一半的数字...
- Pandas 表格样式设置指南,看这一篇就够了!
- 5.2k Star!一款 Python 实现的美观终端资源监视器
- 绝对牛逼的3套Python项目,就业/毕设/私活/女朋友都不愁了
- 这声音酥了!萌妹程序员鼓励师24小时在线陪你写代码,给我吹爆这个VSCode插件...
- 查看linux机器性能,Unix Linux 查看机器性能
- httpd开启status模块_Nginx高并发系列之二——Nginx开启ssl模块