OC学习笔记

Posted HWWY

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OC学习笔记相关的知识,希望对你有一定的参考价值。

备注:这里只是个人的观点,有的地方也是copy,多多指教,个人笔记,有侵犯你们版权的地方还望海涵!!!

ARC单例模式的实现

使用alloc方法初始化一个类的实例的时候,默认是调用了 allocWithZone 的方法。

重写allocWithZone方法\

//重写allocWithZone:方法,在这里创建唯一的实例(注意线程安全)

static id _instance;

+(instancetype)alloc

{

    return [super allocWithZone:nil];

}

+ (instancetype)allocWithZone:(struct _NSZone *)zone

{

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

          _instance = [super allocWithZone:zone];

    });

    return _instance;

}

//提供1个类方法让外界访问唯一的实例

+ (instancetype)sharedInstance

{

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        _instance = [[self alloc] init];

    });

    return _instance;

}

 

//实现copyWithZone:方法

- (id)copyWithZone:(struct _NSZone *)zone

{

    return _instance;

}

/**********************cell的动画效果**************

实现下面UITableViewDelegate的方法:

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{

 

    CATransform3D rotation;

    rotation = CATransform3DMakeRotation( (90.0*M_PI)/180, 0.0, 0.7, 0.4);

    rotation.m34 = 1.0/ -600;

    cell.layer.shadowColor = [[UIColor blackColor]CGColor];

    cell.layer.shadowOffset = CGSizeMake(10, 10);

    cell.alpha = 0;

    cell.layer.transform = rotation;

    cell.layer.anchorPoint = CGPointMake(0, 0.5);

    [UIView beginAnimations:@"rotation" context:NULL];

    [UIView setAnimationDuration:0.8];

    cell.layer.transform = CATransform3DIdentity;

    cell.alpha = 1;

    cell.layer.shadowOffset = CGSizeMake(0, 0);

    [UIView commitAnimations];

}

 

1、 类别(category)和继承的区别?

*类别:类别是对一个功能完备的类的一种补充,就像是一个东西的主要基本功能都完成了,可以用类别为这个类添加不同的组件,使得这个类能够适应不同情况的需求。比如animal这个类,具有eat和run等方法,想给这个类添加一个bark的方法,可以用类别。

*继承:多个类具有相同的实例变量和方法时,考虑用继承。即子类可以继承父类的相同特性。如animal具有年龄和体重两个属性,dog也具有年龄和体重两 个属性,dog可以继承animal的这两个属性,即为继承。

共同点:都是给一个类进行扩展

区别:1.类别是对方法的扩展,不能添加成员变量。继承可以在原来父类的成员变量的基础上,添加新的成员变量

        2.类别只能添加新的方法,不能修改和删除原来的方法。继承可以增加、修改和删除方法。

        3.类别不提倡对原有的方法进行重载。继承可以通过使用super对原来方法进行重载。

        4.类别可以被继承,如果一个父类中定义了类别,那么其子类中也会继承此类别。

 

/********************按钮点击图片取掉上面的高亮显示

adjustsImageWhenHighlighted

/********************数据解析(json)

visualjmon工具

关于网址的拼接:

http://192.168.1.19:8086/Deyidf-Scs-App/scs/checker/getReport.action?processId=8214

关于bug管理工具

redMine是一个不错的管理工具

 // 去掉UItableview headerview黏性(sticky)

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

{

    CGFloat sectionHeaderHeight = 10;

    if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) {

        scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);

    }

    else if (scrollView.contentOffset.y>=sectionHeaderHeight) {

        scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0);

    }

}

 

https自签发证书的流程和一些要设置的东西

http://blog.csdn.net/mamong/article/details/24472851

http://my.oschina.net/non6/blog/290175

//关于执行这句话的时候出现的(0 moved in, 0 moved out)问题

是因为当你调用我们的tableView的reload方法的时候,使得我们的tableView加载的某一行的数量和上次你加载的行数不一样的结果

[tableView reloadSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationAutomatic];

 

Ivar:成员属性

Ivar* :书一个指向ivar数组的指针

class_copyIvarList:

第一个参数:获取那个类的成员属性列表

第二个参数:要遍历的class里面的成员数量

 

关于数组里面是否包含有一个对象可以用

if ([array containsObject:@"ss"]) {

 }

来做判断

以上是关于OC学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

[OC学习笔记]GCD复习

[OC学习笔记]Block三种类型

[OC学习笔记]objc_msgSend:方法快速查找

[OC学习笔记]class类结构cache_t

[OC学习笔记]协议与分类

iOS开发学习笔记(OC语言)——网络请求