Objective-C学习笔记(一)

软件 Xcode

创建新文件使用命令行工具进行学习Command Line Tool


文件扩展名
扩展名含义
.cc语言源文件
.cc、.cppc++语言源文件
.h头文件
.mObject-C源文件
.mmObject-C++源文件
.plPerl源文件
.oObject(编译后的)文件

Xcode自动创建的模板文件
#import <Foundation/Foundation.h>
int main(int argc,const char * argv[])
{
    @autoreleasepool{
        NSLog(@"Hello world!");
        }
    return 0;
}
  • Objective-C语言是区分大小写的,Sum、SUM、sum是不同的。
  • 注释有两种:使用连续两斜杠(//)或者使用(/*)开始并以(*/)结束
  • #import表示将Foundation/Foundation.h文件的信息导入或包含进程序里
  • main是一个特殊的名称,它表示程序将在何处开始执行,而之前的int表示main返回的值类型为整形
  • @autoreleasepool意为“自动释放池”,@autoreleasepool{***}花括号之内的机制是:它使得应用在被创建新对象时,系统能够有效的管理应用所使用的内存
  • NSLog是一个函数,仅仅显示或记录其参数,但在之前会记录该函数执行的日期时间、程序名以及其他数值,如图
    NSLog执行显示的信息
  • @符号表示之后的为NSString字符串对象,若没有@符号在前,就是常量C类型的字符串
  • NSLog(@”The sum of 40 and 30 is %i”,sum);其中%是个特殊的字符,它能被NSLog所识别,跟在后面的字符表示将要显示的值类型,i表示将要显示的是一个整数

类、对象和方法
  • 类、对象和方法的辨别
    – 通俗易懂的可以这样理解,如下图
Class,Object & Method
类(class)对象或实例(object or instance)方法(method)
类:Car实例(即对象):myCar操作:开车drive
操作:加油getGas
操作:洗车wash
……
实例(即对象):yourCar操作:开车drive
操作:加油getGas
操作:洗车wash
……
…………
Objective-C采用的特定的语法对类以及实例应用方法

[ClassOrInstance method]或者[receiver message]
*前一种左方括号跟随的是类名或者实例名,后面是一个或多个空格,空格后是将要执行的方法
*后一种我们称之为接受者以及消息,请求一个类或实例执行某个操作时,就向它发送一个信息
- 以车为例子,首先是你的车yourcar

    yourcar=[car new];   //get a new car
    [yourcar prep];      //get it ready for first-time use
    [yourcar wash];
    [yourcar drive];
    [yourcar getGas];
    [yourcar service];
    currentMileage=[yourcar odometer];

相同的假如是我的车,他的车都是一样的

利用Objective-C定义一个实际的类:笛卡尔坐标(x,y)

笛卡尔坐标XYpoint类的定义,实例的创建,方法的定义

  • @interface 部分
    – 用于描述类和类的方法
    – 类名首字母一般为大写,约定俗成
    – 名称命名规则很简单:名称必须以字母或下划线开头,之后可以是任何字母,下划线或者数字;不能用作名称的有$,!%…等特殊字符,空格,不能以数字开头,保留字不能用。
    – -(void) setX:(int)a;前面的负号-表示该方法是一个实例方法,若是+则表示该方法是类方法。(void)表示该方法无返回值,:表示该方法有参数,(int)表示参数类型,a表示参数名称。
一般格式如下:
@interface NewClassName:ParentClassName
propertyAndMethodDeclarations;
@end
@interface XYpoint:NSObject
    -(void) setPointname:(char)n;
    -(void) setX:(int)a;
    -(void) setY:(int)b;
    -(void) print;
    -(int) x;
    -(int) y;
    -(char) name;
@end
  • @implementation 部分
    – @implementation部分包含声明在@interface部分的方法的实际代码,且需要指定存储在类对象中的数据类型。
一般格式如下:
@implementation NewClassName
{memberDeclarations;}
methodDefinitions;
@end
@implementation XYpoint{
        int x;
        int y;
        char name;
    }
    -(void) setPointname:(char)n{
        name=n;
    }
    -(void) setX:(int)a{
        x=a;
    }
    -(void) setY:(int)b{
        y=b;
    }
    -(void) print{
        NSLog(@"点%c的笛卡尔坐标是(%i,%i)",name,x,y);
    }
    -(int) x{
        return x;
    }
    -(int) y{
        return y;
    }
    -(char) name{
        return name;
    }
@end
  • @program 部分
    – 类对象声明、创建以及初始化
    ClassName *NewClassObject;
    NewClassObject=[ClassName alloc];
    NewClassObject=[NewObjectName init];
    创建与初始化是可以合并在一起的,如下方代码出声明对象的时候合并了创建与初始化
    – 设置实例变量值的方法称为设值方法(setter),用于检索实例变量值得发放叫作取值方法(getter)。
#import <Foundation/Foundation.h>
int main(int argc,const char * argv[]){
    @autoreleasepool{
        XYpoint *Point_A;
        Point_A=[XYpoint alloc];
        Point_A=[Point_A init];
        //---Point_A的创建以及初始化---//
        XYpoint *Point_B=[[XYpoint alloc] init];
        //---Point_B的创建以及初始化---//
        XYpoint *Point_C=[XYpoint new];
        //---Point_C的创建以及初始化---//

        [Point_A setX:3];
        [Point_A setY:4];
        [Point_A setPointname:'A'];

        [Point_B setX:6];
        [Point_B setY:7];
        [Point_B setPointname:'B'];

        [Point_C setX:1];
        [Point_C setY:9];
        [Point_C setPointname:'C'];

        [Point_A print];
        [Point_B print];
        [Point_C print];
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值