iOS Object-C

Object-C语法

字符串

创建

1
2
NSString *str = @"cumt";
NSString *newStr = [NSString stringWithFormat:@"My age is %d ,no is %d and name is %@",age,no,name];

输出

  1. NSLog(@”i=%d”,i);
  2. NSLog(@”pi=%f”,pi);
  3. NSString *s=@”iOS应用开发详解”;
    NSLog(@”s=%@”,s);

创建类

类格式

  1. 类方法的声明.h必须写在@interface和@end之间
  2. 类方法的事项.m必须写在@implement和@end之间
  3. NSObject 让继承类具备创建对象的能力

类创建

1
2
Car *c = [Car new];
[c run];

构造方法

main.m

1
Person *p = [[Person alloc] init];

Person.m

1
2
3
4
5
6
7
8
9
10
11
-(id)init{
// 一定要调用回super的init方法:初始化父类中声明的一些成员变量和其他属性
// self = [super init]; //返回当前对象
// 如果对象初始化成功,才有必要进行接下来的初始化
if (self = [super init]) {
_age = 18;
}
//返回一个已经初始化完毕的对象
return self;
}

自定义构造方法

  1. 一定是对象方法,以-开头
  2. 返回值一定是id类型
  3. 方法名以initWith开头

方法与函数

方法命名

  1. OC方法中,一个参数对应一个冒号
  2. 方法名:square:(冒号也是方法名的一部分)
  3. 方法名:sumWithNum1:andNum2:

方法与函数

方法

  1. 对象方法以-开头,类方法以+开头
  2. 对象方法的声明必须写在@interface和@end之间
    对象方法的实现必须写在@implement和@end之间
  3. 对象方法只能由对象来调用

函数

  1. 函数能写在文件中的任意位数,函数归文件所有
  2. 函数调用不依赖于对象
  3. 函数内部不能直接通过成员变量名访问某个对象的成员变量

封装

命名

  1. 成员变量名的命名规范:一定要以_开头
  2. get方法名与成员变量名一致

成员变量作用域

  1. @implementation中默认是@private
  2. @implementation中默认是@private

Description

默认情况下,利用NSLog和%@输出对象时,结果是:<类名:内存地址>

  1. 会调用对象的-description方法
  2. 拿到-description方法的返回值(NSString *)显示到屏幕上
  3. -description方法默认返回的是“类名+内存地址”

Others

SEL

ARC

类的循环引用

当两端循环引用时,解决方案:一端用strong,另一端用weak

Block

Protocol

  1. @required要求实现,不实现就会发出警告
  2. @optional不要求实现

Dictionary

1
2
3
4
5
NSArray *keys = @[@"name",@"address"];
NSArray *objs = @[@"Jack",@"cumt"];
NSDictionary *dic = [NSDictionary dictionaryWithObjects:objs forKeys:keys];
NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"Jack",@"name",@"cumt",@"address",@"785956678",@"qq",nil];
NSDictionary *dic2 = @{@"name":@"Jack",@"address":@"cumt"};