object-c学习笔记-2

@class关键字的使用
@class声明一个类(提高编译效率,可以递归包含,#import不能递归包含)
如果是继承某个类,就要导入类的头文件(#import),如果只是定义成员变量属性用@class

自动释放池是oc里面一种内存自动回收机制,一般可以将一些临时变量添加到自动释放池中统一回收释放,当自动释放池销魂时,池里面
所有对象都会调用一次release方法
oc对象只需发送一条autorelease消息,就会把这个对象添加到最近的释放池中(栈顶)
@autoreleasepool代表创建一个自动释放池
[xx autorelease]将xx这个对象放到池子中
{}作用就是里面所有添加了autorelease放到这个池子中
以前我们创建一个对象后需要在特定的地方对这个对象释放,而添加了autorelease后我们就不必特定关心这个对象在哪里释放,由释放池帮我们管理
Student *stu = [[[Student alloc] init] autorelease];

@property属性分类,格式为@property(参数1,参数2) 类型 名字;
第一类:读写属性readonly(只生成get方法的声明),readwrite(同时生成set和get方法的声明)
第二类:setter处理(assign,retain,copy)retain代表release旧值retain新值就不必在重写set方法管理内存 copy代表release旧值copy新值
第三类:原子性(atomic代表给方法加锁保证线程安全,nonatomic代表不需要考虑线程安全问题)
默认为assign,基本数据类型可以写可以不写。如果是对象需要retain(@property (retain) Student *stu)
@property (nonatomic,getter=isMobile) Bool mobile;//getter是用来指定get方法的方法名


类目category(在不更改类的基础上动态的为已经存在的类添加新的方法)
xcode工具新建分类,填写分类名称与对哪个类添加分类,xcode会自动生成文件 类名+分类名称.h/m
@interface Student (Learn);
类名称后面的()代表着分类,()中的内容为分类的名称
分类只能扩展方法,不能增加成员变量。

延展的作用就是定义自己的私有方法。形式和类目相同,不用新创建文件,只是把类目的interface地方的文件放在了你需要扩展的类的.m文件里边。


protocol就是一系列方法的列表,其中声明的方法可以被任何类实现,相当于java中的接口,协议中的方法都不一定要实现

@protocol对协议提前声明,相当于@class

@protocol 协议名 <NSObject> //NSObject根本协议 <>号代表实现某个协议

 

block封装了一段代码可以在任何时候执行(代码段)
block声明 int (^sum) (int,int) = ^(int a,int b){
    return a+b;
}
block中可以访问外面定义的变量,默认情况下不可以修改,如果外面的变量已经用__block关键字,就可以在block内部修改这个变量

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值