Objective-c基础知识学习笔记

Objective-c基础知识学习笔记(一)

        一直有记录笔记的习惯,但很久没分享一些东西了,正好上半年开始学习IOS了,现在有空写点。因开发需要,公司特意为我们配置了几台新MAC,还让我们自学了2周时间,就正式进入开发了。现在将自己了解的一些基础知识分享一下。

一、开发工具

        svn管理工具:versions(备注:个人感觉这个工具不是很好用,经常操作缓慢而且卡顿)、开发工具:xcode

 

二、IOS系统架构

        IOS是基于UNIX内核,Android是基于Linux内核。

        IOS的系统架构分为四个层次,从下到上依次是:核心操作系统层(Core OS layer)、核心服务层(Core Services layer)、媒体层(Media layer)和可触摸层(Cocoa Touch layer)。

        1、Core OS是位于iOS系统架构最下面的一层,是核心操作系统层,它包括内存管理、文件系统、电源管理以及一些其他的操作系统任务,可以直接和硬件设备进行交互。作为app开发者不需要与这一层打交道。

        2、Core Services是核心服务层,可以通过它来访问iOS的一些服务。

        3、Media是媒体层,通过它我们可以在应用程序中使用各种媒体文件,进行音频与视频的录制,图形的绘制,以及制作基础的动画效果。 

        4、Cocoa Touch是可触摸层,这一层为我们的应用程序开发提供了各种有用的框架,并且大部分与用户界面有关,本质上来说它负责用户在iOS设备上的触摸交互操作。

 

三、重要后缀说明

        .h后缀的文件指头文件,描述类、类的数据成分以及类的方法,相当于接口。

        .m后缀的文件是实现文件(源文件)

        .xib后缀文件,是interface builder文件,存放应用程序的用户界面(UI)

 

四、基础语法

        Objective c是面向对象的

1、#import(引入头文件)语法

        eg:#import<Foundation/Foundation.sh>

#import"SelfClass.h"

@classSelfClass

         备注:<>只在系统文件中查找,””先在本地查找,没找到则到系统文件中查找,import可自动防止同一个文件被导入多次。实例变量类型一般用@class引入,这个可以缩短编译时间,一般用在interface中,里面的方法和变量不可用。

2、字符串NSString

        @"字符串"

3、BOOL布尔类型

        有YES和NO两个值,备注:大于0的数不一定是YES

4、控制台输出NSLog()

        %@输出NSString等对象的值

 

五、类的定义与实现

1、@interface用于定义接口类

        接口一般在.h文件(头文件)中定义,用来展示类的构造。

         Eg:定义基于NSObject类的Circle类

@interfaceCircle :NSObject

{

      ShapeColor *fillColor;

}

-(void) draw;

-(void)setFillColor: (ShapeColor *) fillColor secondName:(int) index;

@end

        1)、大括号内的变量为类的实例变量(只在对象的实例中有效,所以称为实例变量ivar),后面的为方法声明。备注:c函数原型中没有先行短线。

        2)、方法返回类型与C函数有相同的类型:标准类型(整型、浮点型、字符串)、指针、引用对象和结构体,如果方法使用参数则需要冒号,否则不需要冒号。没有声明实例变量时,无需大括号。

        3)、上面多参数方法定义,也可以不需要secondName,但不推荐这样使用。

        4)、有些方法的声明是先行加号,这样的方法为类方法(class method),这个方法属于类对象(而不是类的实例对象),类似于静态方法,通常用于创建新的实例,我们称这种用来创建新对象的类方法为工厂方法。

        5)、在对象类型的右边都有一个*号,所有的对象变量都是指针类型。id类型(任意类型)已经被预定义为指针类型,所以不需要再加一个*

2、@implementation

实现类一般在.m文件(实现文件)中实现,实现了接口所声明的所有方法。

Eg:上面Circle的实现类

@import “XXX.h”//引入上面定义的头文件

@implementationCircle

- (void)setFillColor: (ShapeColor *) c

{

      fillColor = c;

}

 

3、对象的实例化

1)、Circle *circle = [Circle new];//不建议这样使用

2)、Circle *circle = [[Circle alloc]init];//一般这样初始化

4、方法的调用

[ciclesetFillColor: kRedColor];//备注中间是空格

5、实例变量作用域的指令:

@protected实例变量可被该类及任何子类中定义的方法直接访问(默认的情况)。

@private实例变量可被定义在该类的方法直接访问,不能被子类定义的方法直接访问。

@public实例变量可被该类中定义的方法直接访问,也可被其他类或模块中定义的方法访问。使得其他方法或函数可以通过(->)来访问实例变量(不推荐用)。

@package 对于64位图像,可以在实现该类的图像的任何地方访问这个实例变量。

6、继承

@interface Circle: NSObject

        不支持多继承,但Objective-C通过其它特性达到多继承的效果,例如类别和协议。

7、复合(composition)

        复合就好像音乐中的作曲一样:将多个组件组合在一起,配合使用,从而得到完整的作品。严格来说,只有对象间的组合才能叫复合。

        复合类之间的关系为“has a”。备注:在Objective-C中,复合是通过包含作为实例变量的对象指针实现的。

Eg:汽车有4个轮胎和一台发动机。

@interface  Car:NSObject

{

      Engine *engine;

      Tire *tire[4];

}

备注:为新建的Car对象分配内存时,这些指针将被初始化为nil(零值)

 

六、id

id shapes[2];

shapes[0] = [[Circlealloc]init];

shaoes[1] =[ [Egg alloc]init];

它是指向任意类型对象的指针,相当于范型。

 

七、存取方法名命名

1、setter方法需要在属性名称前增加set前缀,eg:setEngine

2、getter方法则是以其返回的属性名称来命名,eg:engine不要将get用作getter方法的前缀,例如方法getEngine违反了命名惯例,get这个词在Cocoa中有特殊的含义,如果get出现在Cocoa的方法名中,就意味着这个方法将你传的参数作为指针来返回数值。

 


  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值