首页 前端 ios 正文

object c 笔记

long 2020-08-01 10:08 ios 人气208

声明类方法:

@interface MyClass:NSObject{ 
// 类变量声明
}
// 类属性声明
// 类方法和声明
@end


实现类:

@implementation MyClass
// 类方法定义
@end


创建对象

MyClass  *objectName = [[MyClass alloc]init] ;


声明方法,对象方法用-,类方法用+

-(returnType)methodName:(typeName) variable1 :(typeName)variable2;


例子:

-(void)addA:(CGfloat)a andB:(CGfloat)b;

调用:

[self addA:10 andB 20];


协议,类似java,c#里的接口

protocol语法

@protocol protocolName

@required
//方法声明

@optional
//方法声明

@end

@required 用于表示协议中该方法必须在类中实现,默认[如果不加则默认为@required]

@optional 用于表示协议中该方法在类中可以选择实现

conformsToProtocol 方法用于判断某个类是否遵循某个协议

bool flag1=[child conformsToProtocol:@protocol(NewProtocol)];


数据类型

NSString 字符串,字符串转整数 :str.intValue。整数转字符串:[NSString stringWithFormat:@"%d", intValue]

CGfloat 浮点型

NSInteger 整型

BOOL 布尔


打印日志:

NSLog(@"");


数组

NSMutableArray :可变数组

NSArray:不可变数组

NSMutableArray *aMutableArray = [[NSMutableArray alloc]init];
[anArray addObject:@"firstobject"];
NSArray *aImmutableArray = [[NSArray alloc]
initWithObjects
:@"firstObject",nil];


字典

NSMutableDictionary:可变字典

NSDictionary:不可变字典

NSMutableDictionary*aMutableDictionary = [[NSMutableArray alloc]init];
[aMutableDictionary setObject:@"firstobject" forKey:@"aKey"];
NSDictionary*aImmutableDictionary= [[NSDictionary alloc]initWithObjects:[NSArray arrayWithObjects:
@"firstObject",nil] forKeys:[ NSArray arrayWithObjects:@"aKey"]];


通过dictionary赋值对象的属性,需要key跟属性名相同

setValuesForKeysWithDictionary


instancetype :未知类型对象,对象的类型是具体的

id:未知类型对象

instancetype可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象;

instancetype只能作为返回值,不能像id那样作为参数


dispatch_once_t 在App生命周期里,只执行一次。

static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        instance = [[self alloc] init]

    });


block语法,类似于函数指针,多用于定义回调函数

int (^block) (int x, int y) = ^(int x, int y) {

    return x*y;

}

NSLog("%d", block(1,2));


ios调试

可以使用po或者p进行变量输出,打印变量内容

po 变量名

po NSHomeDirectory() 打印项目根目录


异常处理

@try

  {


  }

  @catch(NSException *e) {

  NSLog(@"exception %@", e)

}


万能指针id,可以指向任何对象,调用对象的方法,但是不能使用点语法。


instancetype :当前类的类型,只能作为方法的返回值类型


respondsToSelector: @selector(方法名) 可以判断一个对象里是否存在某个方法


[Persion new] == [[Persion alloc] init] 

init 是初始化方法,重写init方法,需要先调用父类init方法([super init])



评论
  • 消灭零回复
公众号
小程序
网站统计
  • 文章总数:296
  • 总点击量:53666
  • 评论总数:27
  • 网站运行:543 天