`

Objective-C基础教程笔记

阅读更多

 

Objective-C基础教程1-6章节

最近不算很忙,又没有太多深入研究,按照惯例找一些没接触过的新东西看看学习学习,WiEngine,Box2d之后,这次轮到了Objective-C。Objectvie-C随着苹果设备的风靡,也是最热门的技术之一,无奈之前对C一直存在一些芥蒂,所以没有去接触,不过怎么说语言也是共通的,有些坎肯定还是要迈过的,特别是当下所谓跨Android/iPhone平台,其实都是用C++在开发,所以上上手也是很有必要。

下面是对看Objective-C基础教程1-6章后,对一些东西的笔记,并不是完整的教程,只是类似拾遗,将一些不同的,不熟悉的东西记下来(和之前Python笔记类似)

一切都源于Hello World 恒古不变的定律,熟悉一门语言结构最快也就是这个万能的程序了,Objective-C扩展名为.m(之后书中也有提到.mm就是C++风格)

 

	#import <Foundation/Foundation.h>
	int main(int argc, const char *argv[]){
		NSLog(@"Hello Objective-C");
		return (0);
	}

 

其中NSLog方法是Objective-C专属的一种类型,所有cocoa的对象都被冠以了NS前缀,作为区分。传入的参数@""表示字符串作为NSString被处理,程序其余部分和C类似,#import的含义也不言而喻

布尔值

Objective-C中的布尔变量有些许小的不同,参数类型为BOOL,值为YES/NO,其中YES为1,NO为0,占8位

需要注意的是,如果将一个int,short这样的值赋给BOOL,只有低位字节会发挥作用,这是特别要注意的,因为这意味着,并不是传统认为的,非零即为true

Objective-C中有一种特有的语法:[对象 操作] 这在之后会一直看到

关于Objective-C中的OOP

@interface

至少目前我还将其于java中的接口相类比,名称也一样,但是有人告诉我Objective-C中的interface并不同于接口,而类似于接口的Objective-C中有一个叫做协议的东西,这个以后看到了我会再加以对比区分

 

	@interface Circle:NSObject
	{
		ShapeColor color;
		ShapeRect bounds;
	}
	-(void) setFillColor: (ShapeColor) color;
	-(void) setBounds: (ShapeRect) bounds;
	-(void) draw;
	@end

 

以上就是标准的一个@interface定义,应该很好理解,Circle含有2个变量color,bounds,拥有3个方法

特别注意方法的申明方式 

(void) 表示返回类型 之后是方法名及参数

draw方法不含参数 也不用:

对于多个参数的方法申明

-(void) setTire: (Tire *) tire atIndex:(int) index;(这里的第二个参数看起来有些奇怪,但是在之后调用方法的过程中,atIndex会被用到)

Objective-C的方法调用使用了一种被称为中缀符的东西

看一下分别调用无参,1参和多参的语法

 

	[circle draw];
	[circle setFillColor:kRedColor];
	[car setTire:tire atIndex:2];	

 

@implementation

与名字相同,实现,就是对@interface所申明内容的具体实现

 

	@implementation
	-(void) setFillColor:(ShapeColor c)
	{
		color=c;
	}
	@end

 

这里的color=c其实就相当于self.color=c(这里我又要做类比了,目前的认识self就相当于java中的this指针)

有了@interface和@implementation之后,我们对一个类(对象)的定义就算完成,那么如何实例化一个对象

 

	id shapes[3];
	shapes[0]=[Circle new];
	[shpaes[0] setBounds:rect];
	...

 

这里又看到一个新的东西id,它是一种指向某个对象的指针,目前为止只是看到这一种用法,也没有太多认识,简单的被我理解成了索引

之后看到了new对象的方法[Circle new],再之后是调用对象的方法设置具体的参数

继承

 

	@interface Circle:Shape

 

很简单的方法,Objective-C在继承规则上于java,C#无异,不允许多重继承,不过既然有接口(或者应该叫协议),那么自然同java一样,达到相同的目的自然不难,同样的,子类可以调用父类的方法,通过super,比如[super setColor:c];

Ojbective-C中的空值为nil

接下来 来看一个Car是被如何自动构建的

 

	@implementation Car
	-(id) init
	{
		if(self=[super init]){
			engine=[Engine new];
			...
		}
		return (self);
	}

 

这一段有些理解不能,在书中的注释中说到,这里指如果超类可以完成所需的一次性初始化,需要调用[super init]。init方法的返回值id描述了倍初始化的对象。将[super init]的结果赋给self是Objective-C的标准惯例。

Objective-C中一样有getter/setter方法,但是在命名规则上需要注意

 

	-(Engine *)engine;
	-(void) setEngine: (Engine *) engine;

 

在set方法中 依然采取setXXX的方式 但是get方法则直接采用XXX 而非getXXX,以免混淆

拆分

一般将@interface部分放入.h文件中

 

	#import <Cocoa/Cocoa.h>
	@interface Tire:NSObject
	@end

 

将其他部分放在.m中,在.m中记得引入该头文件

#import "Tire.h"

import下<>代表系统头文件 ""代表本地头文件

关键词@class 告诉编译器此处是一个类,还需要通过指针进行传递

	@class Tire
	@class Engine
	...
	Engine *engine

注意这只有在通过指针指向其他类的情况下可用,减少编译器负担,在继承的情况下不可用,因为他需要了解超类的信息

 

0
0
分享到:
评论

相关推荐

    Objective-C基础教程第二版

    ### Objective-C基础教程第二版:OC入门基础教程 #### 一、Objective-C简介与环境搭建 **Objective-C**是一种面向对象的编程语言,它在C语言的基础上增加了面向对象的功能,并且是开发iOS应用的主要语言之一。尽管...

    objective-c学习笔记

    总的来说,“Objective-C学习笔记”应该覆盖了从基础语法到实际应用的全方位教程,适合初学者系统学习Objective-C,并通过实践加深理解。通过深入学习,开发者可以掌握开发苹果平台应用程序所需的关键技能。

    Object-C语言教程0220.zip基础知识及相关案例

    《Objective-C语言教程0220.zip》是一个包含Objective-C编程基础及实例的课程资源包。这个压缩包中,我们能够找到一系列与学习Objective-C语言相关的材料,包括图像和文本文件,旨在帮助初学者理解并掌握这门强大的...

    Mac编程入门资料(Objective-C)

    Objective-C是一种基于C语言的面向对象编程语言,主要应用于Apple的macOS和iOS操作系统。它是开发Mac应用程序的基础,对于想要进入苹果平台开发的程序员来说,学习Objective-C是必不可少的步骤。本资源包为初学者...

    Object-C语言教程0220.zip

    Objective-C(简称Obj-C或Objective-C)是苹果公司基于C语言构建的一种面向对象的编程语言,广泛应用于iOS和Mac OS X操作系统。本教程将深入探讨Object-C的基础概念、语法特性以及实际开发中的应用,旨在帮助初学者...

    笔记_Objective_c基础教程.pdf

    笔记_Objective_c基础教程

    Objective-C-Learning

    - **基础教程**:介绍Objective-C的基本语法和概念。 - **实例代码**:展示如何创建类、对象、进行消息传递等。 - **项目实践**:可能包含简单的iOS或macOS应用开发项目,帮助你将理论知识应用到实际。 - **进阶话题...

    iOS开发教程(大神原创笔记)副本.pdf

    3. **Objective-C语言基础** - OC概述 - OC程序入口 - 字符串处理 - 输出方式 - 类的定义与使用 4. **面向对象编程在Objective-C中的实践** ### 1. iOS开发环境搭建 为了进行iOS应用开发,首先需要搭建合适的...

    iOS开发教程(大神笔记)

    3. Objective-C编程语言概述:Objective-C是在C语言基础上增加面向对象语法的语言。OC代码中可以混入C语言代码,文件后缀名为.m,支持C++代码的引入,后缀名改为.mm。OC的关键字以@开头,字符串也以@开头,使用NSLog...

    iOS开发教程(大神原创笔记)

    - Objective-C是一种通用的、面向对象的编程语言,它在C语言的基础上增加了面向对象的功能和动态特性。 - Objective-C代码中可以混合使用C语言代码,文件扩展名通常为`.m`。如果将文件扩展名更改为`.mm`,还可以在...

    iPhone开发基础教程_学习笔记

    本教程主要聚焦于iPhone开发的基础知识,包括Object-C语言、界面设计和UIViewController的使用。 Object-C是iOS开发的主要编程语言,它基于C语言并添加了Smalltalk的面向对象特性。对于初学者来说,《Learn Object-...

    51CTO下载-62个IOS免豆资料(下载地址目录).pdf

    基础教程(如`Objective-C_2.0基础教程`和`Objective-C 基础教程【随书源码】`)帮助初学者理解语法、类、对象以及消息传递机制。 - 高级教程(如`Objective-C 高级教程`)则深入到内存管理、类别、协议等高级特性...

    Iphone开发资料整理

    这组资料主要涵盖了iPhone应用开发的基础知识,包括Cocoa框架的基本原理、Dashcode的使用指南以及Objective-C的入门教程。这些文档旨在帮助开发者理解并掌握iPhone应用开发的核心技术和工具。 【描述】: 1. ...

    MyNotes:iOS学习笔记

    本资源"我的笔记:iOS学习笔记"似乎是一个开发者分享的个人学习资料,其中可能涵盖了Objective-C的基础知识、iOS应用开发实践以及对一些第三方控件的分析和使用。 首先,Objective-C作为iOS开发的基础,其语法特性...

    iOS开发基础教程全书ppt课件汇总(完整版).pptx

    Objective-C是早期iOS开发的主要语言,它基于C语言,加入了Smalltalk的面向对象特性。随着Swift的发布,苹果推荐开发者转向这种更现代、安全、高效的编程语言。Swift语法简洁,易于阅读,且支持类型推断和闭包,大大...

    iPhone 开发基础教程

    ### iPhone开发基础教程知识点概述 #### 一、开发前的准备 - **硬件需求**:首先,需要确保拥有一台运行OS X Leopard (10.5.3或更高版本)的基于Intel的Macintosh计算机。这包括2006年后发布的任何Macintosh计算机,...

    《iOS开发标准教程》读书笔记模板.pptx

    第一篇基础篇,主要介绍 iOS 9 开发概述、iOS 9 的开发工具 Xcode 7、Objective-C 语言基础、Cocoa 基础等内容,旨在帮助读者建立起 iOS 9 技术的思想框架,并且对 iOS 9 开发的过程有一个初步的了解。 第二篇界面...

    IOS开发入门

    资料中包含的"Objective-C_2.0 基础教程"和"Objective-C 高级教程"是学习Objective-C的好起点。同时,"Cocoa基本原理指南"深入介绍了Cocoa Touch框架,这是构建iOS用户界面的关键。 其次,"iPhone开发笔记实录(代码...

Global site tag (gtag.js) - Google Analytics