[ios学习]---Objective-C基础学习

cocos2d-x学习交流群:140326755

Email : hahayacoder@gmail.com


一 背景

一直对移动开发和手机游戏开发感兴趣,但是一直处于打酱油的状态,最近也在学习cocos2d-x,然后顺便学习下怎么将程序移植到ios平台上,但是因为对ios开发的环境不熟悉,移植最后以失败而告终,于是准备在业余时间投入到学习ios开发和cocos2d-x中。

一开始学习ios开发时,直接去学习可视化界面的开发,发现有些困难,因为连基本的Objective-C语法都不清楚,所以先大概看了下Objective-C语法。

Objective-C是Mac软件开发领域最主要的开发语言,Objective-C是ANSI版本C语言的超集,支持C基本语法。类的设计和语法主要是基于Smalltalk,最早的面向对象语言之一。

Objective-C中头文件以.h结尾,源文件以.m或.mm结尾,通常是以.m结尾。当你在源文件中需要包含头文件时,你可以使用标准的#include选项,但是Objective-C中提供了更好的方法,使用#import选项。#include选项和#import选项相同,知识#import选项能确保头文件只被包含一次,所以在Objective-C中我们最好使用#import选项。


二 基础语法

1 > 方法调用

[object  method] (不带参数的方法调用 object是对象 method是对象的方法)

[object  method : input] (带参数的方法调用 input是传入参数)

output= [object  methodWithOutput] (对象的方法调用可以有返回值 output就是返回值)


2 > 字符串变量

作为C的超集,Objective-C支持C语言中字符串的相关约定:单个字符被单引号包括,字符串被双引号包括。然而在Objective-C中通常不使用C语言风格的字符串,因为Objective-C中提供一个更好的处理字符串的NSString类。NSString包含你所以预期的优点,包括:保存任意长度的字符串,支持printf风格的格式化工具...

在Objective-C中NSString使用得相当频繁,Objective-C提供了一个助记符可以方便的从常量创建NSString对象。要使用这个助记符,只需要在普通的双引号字符串前面添加一个@符号。

NSString *myString = @”hahaya”;

3 > id类型

id类型就意味着变量可以指向任意类型的变量,比如下面的myObject对象,可以指向任意类型的变量,id类型是弱类型。

id myObject = [NSString string];

注意 :Objective-C中所有对象都是指针类型的。id类型已经预先被定义成一个指针类型了,所以不需要再加星号。


4 > 嵌套方法调用

在C/C++等语言中嵌套方法、嵌套函数的用法如下,function2的返回值传入function1当输入参数

function1( function2() );

在Objective-C中,嵌套方法、函数、消息的用法如下,[prefs fromant]的返回值传入[NSString stringWithFormant : input]中当输入参数,和C/C++等语言中类似

[NSString stringWithFormant : [prefs fromant]]

注意:应当尽量避免一行代码中嵌套调用超过两个,如果这样会造成代码的可读性下降


5 > 类

和其他面向对象的语言一样,Objective-C也是使用类来封装数据的,Objective-C的类规格说明包括两部分:接口和实现。接口部分包含类的声明和实例变量的定义,以及类的相关方法。而实现部分包括了类方法的实际代码。下面是一个类声明示例


(1)类声明总是由@interface编译选项开始,由@end编译选项结束

(2)类名之后,冒号分割的是父类的名称

(3)类的实例(即成员)变量声明在大括号包括的代码块内

(4)实例变量块后面就是类方法的声明列表(当然也可能有属性)

注意: 虽然前面的类只声明了方法,但是类可以声明属性。


6 > 方法

Objective-C中的类可以声明两种类型的方法:实例方法和类方法。调用实例方法前,必须先创建类的一个实例,然后通过类的实例来调用实例方法。而类方法则是属于整个类,不需要创建实例,通过类来调用。(类似于C++中的成员方法和静态成员方法的概念)

前面已经讲解过无输入参数和单输入参数的方法,那么下面就重点说下多输入参数的方法。方法声明包括:方法类型标示符、返回值、一个或多个方法名、参数类型和参数名,具体见下图说明


(1)声明由“-”开始,这是一个方法类型标示符,表明该方法是一个实例方法

(2)方法实际的名字是所有方法名的级联,包括冒号(insertObject : atIndex :)

在头文件中我们可以按如下的样子来定义多输入参数的方法

- (BOOL) writeToFile : (NSString*)path atomically : (BOOL)useAuxiliaryFile;

其中writeToFile和atomically是方法名,path和useAuxiliaryFile是输入参数

竟然已经知道了如何声明、定义一个多输入参数的方法,那么我们在使用的时候该如何调用呢?调用方法如下

BOOL result = [myData writeToFile : @”/tmp/log.text” : atomically : NO];

注意:无论什么时候见到方括号,都是向一个对象或者一个类发送了消息


7 > 属性

属性是用来代替声明存取方法(get和set方法)的快捷方式。属性不会在类中创建一个新的实例变量(即成员变量),属性仅仅是定义方法访问类中实例变量(即成员变量)的速记方式而已。暴露实例变量(即成员变量)的类可以使用属性记号来代替get和set方法。

因为属性可以让类不写实例变量(即成员变量)的get和set方法,所以属性可以让你少写很多代码。属性避免了暴露类中实例变量(即成员变量)的get和set方法,取而代之的是用属性声明指定你希望的行为,然后在声明期间合成基于属性声明的get和set方法。

属性声明放在类接口声明(即方法声明)处。基本的属性声明使用@property编译选项,然后后面紧跟类型信息和属性名字。当然你还可以定制编译选项来对属性进行配置,这些编译选项决定了存取方法的行为。请看下面的例子

@property BOOL flag;

@property (readonly) UIView *rootView; (只能读,仅创建get方法)

使用属性的另一个好处就是要在代码中访问它们的地方使用点语法,请看下面的例子

myObject.flag = YES;

CGRect viewFrame = myObject.rootView.frame;

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值