OC相关知识点1

来源:互联网 发布:最好网络金融理财产品 编辑:程序博客网 时间:2024/05/16 08:10

实例变量与对象的区别:

1.实例变量是已经初始化过后的变量,对象是类的一个指针变量。

满足封装的条件:

1.封装必须给定的变量(初始化方法),2.给食用者安全,即提供尽量少的接口,包括在.h里神明的属性与方法,3.简化代码(重用性强):即将重复的代码部分封装在一个方法里,使用该部分代码时,只需要进行方法的调用。

方法的三要素:1.返回值类型,2.方法名  3.形参:公共的可变的(内容可变的)变量

OC中尽可能避免递归方法的使用,因为递归方法很容易造成死机,

比如:

-(void)set:(NSString *)name
{


self.name = name;


}


#import <Foundation/Foundation.h>
#import "Student.h"
int main(int argc, const char * argv[])
{




Student *stu = [[Student alloc] init];
stu.name = @"luanx";


NSLog(@"name = %@",stu.name);
return 0;


}


该实例中,由于调用set方法的对象是stu 所以在set方法里的self就成为stu,self.name = name又变成了 stu.name = name;循环往复的set调用造成了类似递归方法的调用,该方法在运行时回立刻崩溃。

无论是父类还是子类,被调用方法里的self值永远是调用该方法的实例对象,


在C语言中,枚举值时int类型

在什么时候应给用类方法:当前方法中没有用到当前类的所有内容包括成员变量、属性、实例方法

类方法的作用:简化代码


id 类型与instancetype类型的区别:id类型是人意类型的指针对象,instancetype是实例变量类型


#import 及@class的使用:#import相当于拷贝代码,在两个类之间不能使用#import进行相互的引用,#import既可以写在.h里,也可以.写在.m里,相互引用的关系只在.h里涉及,在.m里不涉及

@class 一般卸载.h里时只是声明可能会有这么一个类,但不知道这个类是否真的存在,一般在.h里声明是要使用@class,除了协议外

类的声明一般是在.h里用@class,在.m里用#import 


0 0
原创粉丝点击