HWWY

导航

关于iOS开发常用的一些东西

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

1. 自定义键盘:inputView重写,可以用重写UITextField来实现

2. UIDatePicker一般默认是英文的,可以设置日期模式(datePickerMode)来设置日期的模式,中文模式(local)

打印函数    nslog(@“%s”,__fun__);

3. 关于pickerView刷新

[pickerView reloadCompoent:1];

id你能调用任何东西的类方法

4. 生命周期一定要调用父类的方法(这是不变的理)

5. command +option+]  向下移动一行

6. 只要给scrollView添加额外的滚动区域就会向下移动(contentInset)

7. tableView的结论。iOS7之后苹果会自动给导航控制器给所有的UIScrollView的顶部添加一个额外的滚动区域,设置不需要调价额外的滚动区域

self.automaticallyAdjustsScrollViewInsets = NO;

8. sizeToFit自动计算lable文字的大小

9. NSString *docsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];搜索路径关于我们的的用户中,YES表示展开我们的路径,不然会以~给出我们的沙盒路径.

10. 沙盒路径应用程序

 

Pasted Graphic.tiff

 

 

11. 沙河里面找到偏好设置文件既可以找到里面相应的数据文件(preference)

12. 存储自定义对象用归档

13. 把自定义对象归档的时候,我们必须在这个自定义等等类里面进行encodeWithCoder,但是我们必须遵守协议,并且生成的这个自定义类的文件是打不开的

14. 所有的控件都有transform这个属性,transform表示形变,(平移,放大,缩放)

15. -(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

这个方法是无论你点击那个视图都有一个视图解决问题的时候(找到最合适的处理视图)

16. -(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 使用注意点:点必须是方法点用者坐标系上的点,返回NO表示点传到那个页面上断了

17. 上面是关于穿透的事件处理,

18. + (void)initialize;这个方法只会调用一次,但是如果子类里面调用了  super方法的话调用的次数不一定是1,而且子类自己会调用自己的+ (void)initialize方法,一般在这里我们可以写一个单例供给我们使用

 

19. 关于block的传值,这个东西真的很好用,按照顺序调用既可以

下面是例子:

-(void)myViewTest:(NSString *)title animation:(void(^)(NSString *title1))animation complete:(void(^)(void))complete;

 

20. performSelector底层实现就是运行时机制

21. #import <objc/message.h>

运行时机制必须导入的头文件,谁做事情调用谁,在xcode里面如果你想调用一些底层的东西,你就要吧msg里面的属性设置为NO

22. #import <SafariServices/SafariServices.h>

是和WebView一样的,关于苹果官网的进度条是假的,因为苹果官网本身不让你调用进度的网页的,因为这个进度是不怎么安全的

 

23. 计算九宫格的行数的时候简介算法:

总的行数 = (总个数 + 每一列最多显示个数 - 1)/每一行最多显示个数

 

24. 获取文件的大小(遍历整个文件夹里面的所有文件)

[[NSFileManager defaultManager] subpathsAtPath:cachesOath];

遍历所有的相关的子路径,然后遍历多有的文件大小就可以加起来就可以了

方法如下:

NSUInteger size;

    NSString *cachesPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject;

    NSLog(@"%@",cachesPath);

    NSFileManager *mg = [NSFileManager defaultManager];

    NSArray *subPath = [mg subpathsAtPath:cachesPath];

    for (NSString *fullPath in subPath) {

        NSString *fullSubPath = [cachesPath stringByAppendingPathComponent:fullPath];

        NSDictionary *atts = [mg attributesOfItemAtPath:fullSubPath error:nil];

        size += [atts[NSFileSize] unsignedIntegerValue];

    }

25. 1000000000像这样的写法在iOS里面我们可以用pow函数代替        pow(10,9);

26. 关于两件事不同步问题:我们可以用block回调的方式去解决

27. GCD 一旦任务创建就会执行,与控制器的销毁没有直接的联系

28. 用户体验和app的优化,tableView里面的cell

当控制器销毁的时候,应该销毁我们的cell,在GCD里面我们用弱引用就可以(很好的典型例子),但是GCD里面的代码还会继续执行,在我们做GCD前面判断下关于我们的WeakSelf是否为空

29. 关于枚举类型的想法:NS_ENUM(可以自己定义类型);enum 和 NS_ENUM一样的。但是NS是OC的东西,enum是以前旧的东西。 

30. 判断一个View时候加载他的父视图上面一般有两种方法

(1)判断父视图是否存在

if(view.superview){

}

(2)判断window是否存在

if(view.window){

}

(3)如果是控制器,还有一种别的方法就是判断

if(viewController.isViewDidLoad){

}

31. 刷新可以自己定义,苹果原生的用的是UIRefreshControl,然后给这个控件添加事件就可以了

32. 关于OpenGl的学习网站:http://blog.csdn.net/wanglixin1999/article/details/51792505

33. 关于cell的分割线:

(1)可以直接在上面加imageView

(2)可以重写setFrame方法,把orign.y +=1;就可以了,这种方法很简单,也很实用,不用我们每次加线条

34. 关于中文的适配,经验:一般时候我们把中文放到最后面,因为这样的话不会造成代码的没有提示

35. 关于get和set方法,只有继承子类能用的用get方法,一般不能外界修改这个方法,但是set方法和get方法同时存在的时候外界是可以修改我们的这个属性的.

36. 关于tableViewCell的高度

——————这个方法是自动计算(讲解时用在xib里面的)自动尺寸

_tableView.rowHeight = UITableViewAutomaticDimension;

估算高度

  _tableView.estimatedRowHeight = 44; 

37. 关于强应用和弱应用的观点(自己总结)

下面是例子:

Pasted Graphic_1.tiff

 

我的理解:关于block的理解,如果block内部使用一个外部的强应用的变量就会产生一个由block内部指向外部的强应用;但是可以用内部的强应用,这样不会产生强应用

 

小马哥总结

1__#$!@%!#__Pasted Graphic.tiff

 

38.关于缓存问题:有的时候回出现很奇诡的问题,一般时候因为:

1.关于苹果内部从新写了你的那个方法

2.是因为缓存问题(这个问题很奇葩,一般时候我们采用的是清空的方法)

3.对自己代码进行断点走法测试

posted on 2017-01-22 14:57  HWWY  阅读(151)  评论(0编辑  收藏  举报