IOS学习---OC基础学习1

OC:
在C的基础上增加了一层最好的面向对象语法
扩展名.m


基本语法:
1、关键字:
基本上所有的关键字都是以@开头
2、字符串一@开头
其他与法:
   引进了bool类型(yes,no)
   nil 相当于C语言中的NULL,也是0
   NSLog(@"hello");NSLog(@"%d",27);
   //@与“”之间无空格,且输出之后自动换行


开发过程
.m源文件->.o目标文件->a.out可执行文件


#import的用途
1、跟include一样,拷贝文件内容
2、可以防止文件内容被拷贝多次


Foundation 框架
NSObjCRuntime.h中有声明NSLog的函数声明
#import <Foundation/NSObjCRuntime.h>
编译时相同
链接时如果用到Foundation框架,要标明
cc xx.m -framework Foundation


每一个框架都有自己的主头文件,要想使用这个框架中的所有.h文件就要import 这个框架下的这个.h文件(主头文件)


因此 要使用NSLog()函数需要
#import <Foundation/Foundation.h> 
引入Foundation.h这个主头文件后,就可以使用整个Foundation框架中的东西


Foundation框架头文件的路径
1、右击Xcode.app->显示内容
2、Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.sdk/System/Library/Frameworks/Foundation.framework


运行过程:
1、编写OC源文件:.m,.c
2、编译:cc -c xxx.m,xxx.c
3、链接:cc xxx.o xxx.o -framework Foundation
(只有用到Foundation框架才需要加上-frameworkFoundation)
4、运行:./a.out


BOOL布尔型
本质:
typedef signed char BOOL;
取值范围: YES,NO
#define YES (BOOL)1
#define NO  (BOOL)0
输出:
当做整型来输出
NSLog(@"%d",YES)
注意:必须要大些








面向过程(Procedure Oriented):关注解决问题的步骤
面向对象(Object Oriented):关注解决问题所需要的对象
面向对象编程(Object Oriented Programing)简称OOP




1、类的设计
①、类名 类名的第一个字母必须大写,不用下划线
②、属性
③、行为(功能)


2、植物大战僵尸
僵尸:
  *类名:Zoombie
  *属性:life(生命值)、speed(速度)、gongjili(攻击值)
  *行为:walk(行走)、bite(咬)、die(死亡)


3、雷电飞机
*类名:Plane
*属性:life、gongjili、speed、bombcount、
*行为:fly、bomb、shoot、die


4、电脑
*类名:Computer
*属性:price、band(牌子)、expiredate(保质期)
*行为:open、close




具体例子:
类名:car
属性:轮胎个数、时速
行为:跑


//完整的写一个函数:函数的声明和定义(实现)
//完整的写一个类:类的声明和实现


//1、类的声明:用来声明对象的属性、行为
//:NSObject 目的是:让Car这个类具备能创建对象的能力
@interface Car :NSObject//开始
{
//用来声明对象属性(wheels称作实例变量或者成员变量)
//@public可以让外部指针间接访问类的成员变量
@public
int wheels;//轮胎个数 默认初始化为0
int speed;//时速 默认初始化为0
}


//方法(行为):方法名、参数、返回值(声明、实现)不//能放在{}之中
//只要是OC对象的方法,必须以-开头
//OC方法中任何数据类型,都必须用()扩住
//OC方法中()的作用就是扩住数据类型
- (void) run;//run()中无数据类型,不需要()


@end//结束




//2、类的实现
@implementation Car
//方法的实现(说清楚方法里面有什么代码)
-(void)run
{
NSLog(@"车子跑起来了");
}


@end


int main()
{
//在OC中,向执行一些行为,就写上一个
[行为执行者 行为名称]中括号
//利用类创建对象
//执行了Car 这个类型new行为创建新对象


//定义了一个指针变量p,将来指向Car类型的对象
//[Car new]会创建一个新对象,并且会返回新对
//象本身(新对象的地址)
Car * p = [Car new];

Car *p2 = [Car new];


p2->wheels = 4;


p2->speed = 250;

[p2 run]


//给p所指向的wheels属性赋值
p->wheels = 4;

p->speed = 250;


//给p所指向对象发送一条run消息
[p run];


return 0;
}


/*

类名:Person
属性(成员变量\实例变量):体重、年龄
行为(方法):走路、吃
*/


//1、类的声明(写成员变量、写方法的声明)
@interface Person :NSObject
{
//成员变量、实例变量
//int age = 20;不允许在这里进行初始化
//static int wheels;不能随便将成员变量当做c //语言中的变量来使用
@public
double weight;//体重
int age;//年龄
}


- (void) walk;
@end
//2、类的实现
@implementation Person
//实现@interface中声明的方法
- (void)walk
{
//直接使用不需要通过参数传递
NSLog(@"%d岁%f公斤的人走了一段路",age,weight);
}
@end


int main()
{
//在使用类创建对象之前,会将类加载进内存
Person p = [Person new];
p->age = 20;
p->weight = 65.7;


[p walk];//调用方法


return 0;
}


注意:
1、interface与implementation不能嵌套
2、方法的实现必须写在implementation里面
3、成员变量不允许在定义时赋值




OC方法和函数的区别:
方法:
1、对象方法都是以减号-
2、对象方法的声明必须写在@interface和@end之间,对象方法的实现必须写在@implementation和@end之间
3、对象方法只能由对象来调用
4、对象方法归类\对象所有
函数
1、函数能写在文件中的任意位置(除@interface与@end之间),函数归文件所有
2、函数调用不依赖于对象
3、函数内部不能直接成员变量名访问某个对象的成员变量


/*
计算器类
方法:
1、返回π
2、计算两个整数的和
3、计算两个整数的和 
*/


带参数的方法名(方法名:claculator:  类中可出现名为claculator 的另一个方法 不带:)
OC方法中一个参数对应一个冒号,该冒号也是方法名的一部分
- (int)claculator:(int)num;
- (int)sum:(int)num1(加空格) :(int)num2;//一定加空格
- (int)sumWithNum1:(int)num1 andNum2:(int num2);
- (int)sumWithNum1:(int)num1 andNum2:(int num2) andNum3:(int)num3;
相当于C中的
int claculator(int num){}
主函数中的调用:
[jsq calculator:10];//计算10的平方,调用方法+参数传递















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值