美文网首页
OC 基本语法(1)

OC 基本语法(1)

作者: 风之化身呀 | 来源:发表于2018-11-08 00:07 被阅读14次

1、类

  • 声明
    1、类名的第一个字母必须是大写;
    2、不能有下划线;
    3、多个英文单词用驼峰标识;
    4、实例方法以减号 - 开头,类方法以+开头;
    5、 OC方法中任何数据类型都必须要用()扩住,OC方法中的小括号():只有一个作用,用来扩住数据类型
    6、声明在@interface和@end之间进行;
#import <Foundation/Foundation.h> // 因为使用了NSObject
@interface Car : NSObject    // NSObject目的是:让Car这个类具备创建对象的能力
{
    @public  // @public关键字,可以让外部的指针间接访问内部的成员变量   
    int wheels; // 轮胎个数  
    int speed; // 时速 xxkm/h    
    // 大括号里面只能写属性不能写行为
}
- (void)run;  // 定义实例方法
+ (void)runWith:(NSString *) p1 andWith:(NSString *)p2 // 定义对象方法
@end
  • 实现
    实现在@implementation和@end之间进行
@implementation Car
- (void)run
{
    NSLog(@"车子跑起来了!");  // 实现声明的方法
}
@end

2、点语法和id指针

1、点语法的本质是方法的调用,而不是访问成员变量,当使用点语法时,编译器会自动展开成相应的方法。
2、切记点语法的本质是转换成相应的set和get方法,如果没有set和get方法,则不能使用点语法。
3、避免死循环,避免这种写法:
(1)在set方法中,self.age=age;相当于是[self setAge:age];
(2)在get方法中,return self.age;相当于是[self age];
4、id是万能指针,能指向或者说操作任何OC对象 。注意:id后面不要加上 *

3、一些关键字

@property 和 @synthesize

1、@property 关键字可以自动生成某个成员变量的setter和getter方法的声明;
2、@synthesize关键字可以帮助生成成员变量的setter和getter方法的实现。

@property int age;
// 编译时遇到这一行,则自动扩展成下面两句:
- (void)setAge:(int)age;
- (int)age;
// 语法:
@synthesize age = _age;
// 相当于下面的代码:
- (void)setAge:(int)age
{
  _age = age;
}

- (int)age
{
  return  _age;
}

3、若手动实现了setter方法,编译器就只会自动生成getter方法和不存在的成员变量;
  若手动实现了getter方法,编译器就只会自动生成setter方法和不存在的成员变量;
若同时手动实现了setter和getter方法,编译器就不会自动生成不存在的成员变量;
4、自从Xcode4.4后,@property就独揽了@synthesize的功能,也就是说,@property可以同时生成setter和getter的声明和实现
  默认情况下,setter和getter方法中的实现,会去访问下划线_ 开头的成员变量。
5、@property 参数

  1. 内存管理相关的参数
  • retain:release旧值,retain新值(适用于OC对象类型),引用地址复制
  • assign:直接赋值(默认的,适用于非OC对象类型),也就是基本数据类型的赋值默认有个assign参数
  • copy:release旧值,copy新值,值复制
  1. 是否要生成set方法
  • readwrite:同时生成setter和getter的声明跟实现
  • readonly:只会生成getter的声明跟实现
  1. 多线程管理
  • nonatomic:性能高(一般就用这个)
  • atomic:性能低(默认)
  1. setter和getter方法的名称
  • setter:决定了set方法的名称,一定要有个冒号:
  • getter:决定了get方法的名称(一般用在BOOL类型的get方法)

@protocal(TS中的抽象类)

1、可以用来声明一大堆方法(不能声明成员变量)
2、只要某个类遵守了这个协议,就相当于拥有这个协议中的所有方法声明
3、只要父类遵守了某个协议,就相当于子类也遵守了
4、定义协议:

@protocol 协议名称 <NSObject>  //遵守基协议

  // 方法声明列表....

 @end

5、遵守协议

@interface 类名 : 父类名 <协议名称1, 协议名称2>

 @end

instancetype

使那些非关联返回类型的方法返回所在类的类型,就是规定方法的返回值,有点类似链式调用

@interface NSArray
+(id)constructAnArray;
@end
[NSArray constructAnArray]  // 返回类型是 id

@interface NSArray
+(instancetype)constructAnArray;
@end
[NSArray constructAnArray]  // 返回类型是 NSArray

4、分类(前端里的装饰器)

1、可以给某一个类扩充一些方法(不修改原来类的代码)
2、语法:

// 声明
@interface 类名(分类名称)

@end

// 实现

@implementation 类名(分类名称)

@end

相关文章

  • 代码

    1.oc基本语法 // // main.m // oc基本语法 // // Created by lanou on...

  • IOS暑假小学期实训 第1天 总结 “ OC基本语法”&&“

    2016/07/09 OC基本语法 // // main.m // OC基本语法 // // Created by...

  • OC 基本语法(1)

    1、类 声明1、类名的第一个字母必须是大写;2、不能有下划线;3、多个英文单词用驼峰标识;4、实例方法以减号 - ...

  • OC 基本语法1

    OC语言主要用于Mac OS 、iOS、watchTv 等应用软件的开发,成熟应用于市场多年。在这里趁着工作之余整...

  • OC的基本语法1

    OC基本语法: 1.整型(int,short,long,double) 用NSInteger表示; 定义为 N...

  • oc基本语法

    // oc基本语法 // 整形 NSInteger a = 10; // NSLog是oc里面的...

  • OC基本语法

    // //main.m //OC基本语法 //OC语言的第一次接触 //Created by side on 16...

  • OC基本语法

    //整型变量 NSInteger a=10//表示定义了一个值为10的整型变量 //NSLog是oc中的打印函数 ...

  • object 初识

    1.基本语法 (1)关键字OC基本上关键字都是已 @ 开头,例如:@interface,@implementati...

  • JavaScript学习笔记2—函数

    JavaScript的相关语法知识:1、函数(important)基本上所有的高级语言(C、OC、JavaScri...

网友评论

      本文标题:OC 基本语法(1)

      本文链接:https://www.haomeiwen.com/subject/nwdbxqtx.html