复合

使用复合可组合多个对象,使之人工协作。

会同时使用继和复合来创建自己的类。

编程中的复合就好像音乐中的作曲一样;将多个组件组合在一起配合使用。

在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 基础教程相关推荐

  1. Objective C基础教程——Xcode工程创建

    Objective-C只不过是拥有一些附加特性的C语言.本文将构建第一个Objective-C程序,同时介绍一些关键的附加特性. ##2.1 最简单的Objective-C程序 我们来写一个最简单的H ...

  2. NLTK01 《NLTK基础教程--用NLTK和Python库构建机器学习应用》

    01 关于NLTK的认知 很多介绍NLP的,都会提到NLTK库.还以为NLTK是多牛逼的必需品.看了之后,感觉NLTK对实际项目,作用不大.很多内容都是从语义.语法方面解决NLP问题的.感觉不太靠谱. ...

  3. C Primer Plus基础教程(1)— 初步认识C语言

    C Primer Plus基础教程(1)-初步认识C语言 一.C语言的起源 1972年,贝尔实验室的丹尼斯・里奇( Dennis Ritch)和背・汤普进( Ken Thompson)在开发UNX操作 ...

  4. Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现

    自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注.虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭 ...

  5. [SQL基础教程] 1-5 表的删除和更新

    [SQL基础教程] 1-5 表的删除和更新 表的删除 语法 DROP TABLE <表名>; 法则 1-12 删除的表无法恢复 表定义的更新 语法 ALTER TABLE<表名> ...

  6. python 包用法_Python 基础教程之包和类的用法

    Python 基础教程之包和类的用法 这篇文章主要介绍了 Python 基础教程之包和类的用法的相关资料, 需要的朋友可以参考下 Python 是一种面向对象.解释型计算机程序设计语言,由 Guido ...

  7. Spring Cloud Alibaba 基础教程:Nacos 生产级版本 0.8.0

    Spring Cloud Alibaba 基础教程:Nacos 生产级版本 0.8.0 昨晚Nacos社区发布了第一个生产级版本:0.8.0.由于该版本除了Bug修复之外,还提供了几个生产管理非常重要 ...

  8. Python培训基础教程都教哪些

    根据相关数据统计,目前学习Python技术的同学大多数是零基础,都是从其他行业转型来学习的,那么Python培训基础教程都教哪些呢?好不好学呢?来看看下面的详细介绍. Python培训基础教程都教哪些 ...

  9. 深度学习之Pytorch基础教程!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:李祖贤,Datawhale高校群成员,深圳大学 随着深度学习的发展 ...

最新文章

  1. C#实现MVC模式简要方法(2)
  2. 浏览器直接连接mysql_在IE中直接连接SQL数据库_MySQL
  3. (十)装饰器模式详解(与IO不解的情缘)
  4. php网站不能访问,php怎么不登录不能访问
  5. python论文摘要_python新玩法:用python进行文章摘要拿取,只需要一行代码
  6. 俄罗斯黑客入侵冬奥会系统,还甩锅给朝鲜?
  7. Web API-DOM-滚动事件、加载事件和元素大小和位置
  8. mysql连接池cp_BeeCP
  9. js面向对象写法及栈的实现
  10. 【python基础学习必备小手册(适合新手)详细教程】
  11. 前端开发的几种常用的编辑器
  12. fc安卓模拟器_RA替代计划(上)—3DS的全能模拟器太难用?推荐几个替代品给你...
  13. STM32使用大彩屏程序总结(二)
  14. Qt程序移植到ARM
  15. ctf php 流量分析题,CTF平台hackit题目分析与解答
  16. “五年饮冰,难凉热血”,一名专科生的求学历程
  17. 中国目前还未掌握的核心技术有哪些?(无图)
  18. 开始使用TreeATE
  19. IEEE1588(PTP)-1-PTP与NTP之间的异同
  20. 【顶】利用分子分母有理化或者平方开方解题的典型及一道待解决的问题

热门文章

  1. vue 页面使用百度地图
  2. SageMaker使用托管容器训练本地网络模型
  3. linux 备份数据,LINUX下备份数据
  4. 统计数组中每个数字出现的次数_剑指Offer(二十八) 数组中次数出现超过一半的数字...
  5. Pandas 表格样式设置指南,看这一篇就够了!
  6. 5.2k Star!一款 Python 实现的美观终端资源监视器
  7. 绝对牛逼的3套Python项目,就业/毕设/私活/女朋友都不愁了
  8. 这声音酥了!萌妹程序员鼓励师24小时在线陪你写代码,给我吹爆这个VSCode插件...
  9. 查看linux机器性能,Unix Linux 查看机器性能
  10. httpd开启status模块_Nginx高并发系列之二——Nginx开启ssl模块