关于OC 特有的语法
来源:互联网 发布:360免费wifi网络不稳定 编辑:程序博客网 时间:2024/05/16 12:59
这篇博客主要是关于OC 特有的语法,以前没怎么注意语言的特性,所以经常会出现一些细节的错误跟繁琐,知道一下特性会在你的coding中有很大的帮助,以下主要是我认为重要的,方便加强记忆。
@property
可以取代我们对成员变量的setter/getter 方法的声明与实现。
@property int age;//int 为 age的类型,同时声明了(系统自动生成的一个私有成员变量_age)- (void) setAge:(int)age; -(int )age;
但是没有帮我们实现方法,我们还是要自己去.m文件中自己去实现。
或者我们在.m文件中使用
@synthesize age =_age;这样就会自动实现age的setter/getter 方法(如果_age 不存在,系统自动生成的一个私有成员变量_age)
@synthesize age默认是生成与age 同名的setter/getter 方法。
* 只用@property int age;既可以实现声明/实现与private _age 成员变量的添加。
** 我们使用了@property int age ;自己可以重写setter/getter方法,但当这俩方法同时手动实现,编译器不会生成不存在的成员变量。
id类型
id 可以理解为万能指针,只能修饰对象,可以操纵所有oc对象
(id=NSObject *)===》id d=[Person new];
构造方法
Person * p =[Person new];//完整的创建一个可用对象,new这个类方法调用了俩个函数
分配存储空间+alloc 2,实现初始化- init
这个init 方法是系统固定的初始化方法,为了实现不同的初始化我们就要用到构造方法(构造方法就是初始化,返回类型为id)。
重写模板:
-(id)init{//一定要调用[super init]来声明初始化父类中的成员变量和其他属性If(self =[super init]) { //自己的独特初始化} Return self;
自己定义带参数的构造方法:
-(id) initWithAge:(int)age{ If( self = [super init]) { Self.age=age; } Return self}
分类
我们什么时候会用到分类呢?
当我们想添加或者更改某些方法时,就可以用分类。
* 其优点在于当我们参加一个大型项目开发时,一个庞大的类可以分模块开发,一个庞大的类可以由多个人来编写,更有利于团队合作,一个原始类可以有多个分类。
书写格式为:
@implementation 类名 (分类名称)// 方法实现@end
- 在我们使用分类的时不能添加成员变量,但是可以实现原始类的方法,一般不这样做,因为它是直接替换掉原来的方法,这么做的后果是再也不能访问原来的方法,多个Category中如果实现了相同的方法,只有最后一个参与编译的才会有效。
SEL类型
这个SEL是解释当一个对象调用方法的的内部过程。有兴趣可以认真研究下。
可以认为一个SEL类型对应一个方法,当我们知道某个SEL后都可以找到相对应的方法。
如何获取一个函数的SEL:SEL s = @selector(test);
调用对象p的test方法
[p performSelector:s];==[p test];
前者就是我们使用SEL间接调用,后者是直接调用。
当我们的方法需要参数时不要忘记冒号!!
SEL s = @selector(test:);[p performSelector:s withObject @”dgag”];
关于OC语言的一些特性我就记录到这了,重新又看了遍MJ的视频,感觉很多之前记住的又忘记了,还好写博客有帮我重新复习了遍,多敲敲代码就好了~~
- 关于OC 特有的语法
- 黑马程序员 oc的特有语法
- 黑马程序员---OC特有的语法
- OC中特有的一些语法
- OC中特有的一些语法
- OC特有的方法(点语法,)
- OC语法<3.1> OC中特有的语法:Category分类
- OC语法<3.2> OC中特有的语法:Block数据类型
- OC语法<3.3> OC中特有的语法:Protocol协议
- OC特有语法
- OC---特有语法1
- OC特有语法
- OC--特有语法
- OC特有语法<一>
- OC特有语法<二>
- OC特有语法总结
- OC语法基础(8)-- OC中特有的…
- oc中的特有语法category
- android上播放按键声音方法
- 代理与反向代理
- EasyGui 学习文档【超详细中文版】[增强版]
- 官网地址
- leetcode 日经贴,Cpp code -Remove Nth Node From End of List
- 关于OC 特有的语法
- ios实现长时间后台运行
- ubuntu14.04(64位)运行32位程序
- 使用sos查看.NET对象内存布局
- C/C++ struct位结构(位域)
- 弗罗贝尼乌斯范数
- php mvc模式
- ACdream 1061(abs用法)
- cocos2d-x 3.0 WIN7+VS2012 安卓平台搭建