Objective-C学习笔记

每周更新一次,OC初学者的学习笔记。

第一节

OC概述 

1.#import 作用: 能避免头文件重复包含 值得一提的是Foundation.h把C语言中的所有头文件都包含进去了,且源文件的扩展名为.m. 所以想再释放池中写C 的程序也是可以的

2.@autoreleasepool(自动释放池): 在池中对象会自动进行释放,其实不一定都会自动释放。代码写在自动释放池的大括号之内,
3.return 0 在@autoreleasepool所含大括号之外
4.NSLog函数: 能够自动换行。凡是遇到前缀是NS的函数,都是Foundation框架中的东西NSLog实际上就是输出函数,和C中的printf 差不多,NSLog中的@是为了区别和其他语言的字符串“”之内的内容都叫字符串。
且NSLog能把程序运行到NSLog所花时间打印出来。
5.OC中的字符串和C语言中的字符串不一样,OC中的字符串必须在前面加上一个标识 @
6.OC的两个新的数据类型:逻辑型BOOL 他的值不是TRUE||FALSE,而是yes和no.BOOL类型真正的类型是char型。
7.NSString: 是Foundation框架中的一个类,这个类的对象生成的一个具体的变量就是一个字符串,特别注意,它用到的字符串必须要是OC的字符串。
NSString * str = @"123";//NSString本身是一个数据类型,这个数据类型用指针,等于的是一个OC的一个字符串

BOOL b = YES;//ascii码是1的字符
b = NO;//ascii码是0的字符
NSString *str = @"123";
NSLog(@"%d",123);//再次注意NSLog中必须提供一个OC的字符串!

8.要记住z,在OC中所有的对象型都是指针型的,没有普通型的,理解成一个指针 所以这样写是错误的:

//NSString str = @"123";
NSString * str = @"123";
NSLog(@"%s",123);//这样输入也没问题
//但是这样不行
NSLog(@"%s",str);//像这种情况 我们OC中有一个新的占位符:%@,代表在这个位置我想输出的是一个对象型的
NSLog(@"%@",str);//这样就对了

第二节 

OC中类的声明和实现 

9.OC是面向对象语言 面向对象与面向结构有何区别?

比方说你现在开了一个公司,你现在是公司的老板,面向结构的意思是你的老板事必躬亲,就跟诸葛亮一样:事无巨细,咸决于亮。啥事都得自己去做。这样做,如果公司是个小公司,当然没问题,事儿比较少,能忙得过来,但如果公司规模比较大,还是这样事事操心,可能就没这个能力了。
这时就得用面向对象的概念。面向对象是指,假如你是公司的老板,你做事情的时候抓住一个对象就行了,比如说你是老板,那就招聘一个总经理,我就控制一个总经理,让他去做事,然后总经理再去招聘下面的相关人员,来指挥下面的人员去做事。 总之,面向对象就是,做任何事情都是间接去做,而不是直接去做。(实际上就是操纵对象去做事,你想做一个事,就去找一个对象来做这个事情。至于他怎么去做的,我们并不关心。) 10.面向对象的编程语言,对象是从 类 来的,所以一开始必须知道类的知识。 类有两种:
第一种是框架中给我们提供的那些类 ,这些类可直接使用
第二种是我们自己定义的类 先看 如何去定义一个类。
(1)类有两个部分,第一部分是声明部分,第二部分是实现部分。
#import <Foundation/Foundation.h>
@interface Student:NSObject;//定义一个学生类。冒号后面代表这个类继承了哪一个类
//OC中所有的类都有一个继承的机制,OC中所有的副类都是 NSObject 他是所有类的副类。
{
    //@interface是声明的开始,@end是声明的结束
//类里面是数据和操纵数据的方法
//类本身是对一个事物的高度的概括,类里面的数据就是这个事物的特性
    NSString * name;//对于学生类,该事物特性无非就是姓名和年龄
    int age;
}
//然后是类的行为,也就是类里面的事物能做啥动作。
//学生的动作:说话
-(void)say;//-(void)是一个语法,等会说
@end
//还有一个功能 就是下面类的实现部分
//是对类的行为的具体的定义
@implementation Student//与类的名字相统一  无分号
-(void)say//实现类
{ 
    NSLog(@"我叫%@,%d岁了",name,age);
}
@end//这个也要有始有终有end
//以上为类的声明

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //类的应用,想应用类,就要把类变成对象,也就是说我们想使用一个对象,就要根据类创建一个对象
       //类也可以说是一个自定义的数据类型,和以前C语言中的struct相似
     //下面把学生类变成对象:
    Student * zs = [[Student alloc]init];//从堆里面申请内存,然后调用一个它的初始化的行为
    //使用这个由类变成的对象,其实就是使用它的行为
    [zs say];
    }
    return 0;
}

(2)Xcode中有一个向导功能,可以由这个功能去创建一个类: main.m是某个文件的子文件,右击该文件,选择new file,之后选择cocaclass命名这个class的名称时最好加上自己姓名的前缀,这样在之后团队做栈时容易区分 之后就会看到创建成功两个以类命名的.h(声明)和.m(实现)文件就把类的定义和实现分别在两个不同的文件中去编写。 类的真正的名字 的第一个字母要大写。

第三节

类的定义和使用 (一) 

10.OC里面有一些硬性的规定我们需要遵守:一般函数的名字,在进行赋值时我们用到的函数都叫set(小写)之后跟被赋值数据的名称,首字母大写

-(void)setName:(NSString *)_name;
-(void)setAge:(int)_age;
//这是在.h文件中的声明,还需要在.m文件中实现,详见hello文件

实现:

-(void)setName:(NSString *)_name
{
    //实现实际上就是把_name赋值给main里面的name
    name = _name;
}
-(void)setAge:(int)_age
{
    age = _age;
}
//类中的行为必须是你让他去做,它才会做。不会自动去做

接下来在主函数中赋值名字与年龄,注意要加中括号!

[zs setName:@"李四"];//调用行为的时候一定要用中括号!
[zs setAge:22];

11.类中的封装其实就是指对类中的数据进行保护,也就是在上文进行类的行为时用[]括起来

12.两个参数的类函数的声明:

-(void)setName:(NSString *)_name andAge:(int)_age;//多参数的函数

实现:

-(void)setName:(NSString *)_name andAge:(int)_age;
{
    name = _name;
    age = _age;
}

主函数中应用:

[zs setName:@"李四" andAge:22];

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值