[关闭]
@fiy-fish 2016-07-12T21:16:39.000000Z 字数 3577 阅读 1596

Objective-C 2.0 编写高质量iOS与OS X 代码的52个有效方法

读书笔记


1.了解Objective-C 语言的起源

2.在类头文件中尽量少引用其他头文件

3.多用字面量语法,少用与之等价的语法

  1. NSNumber *intNumber = @1;
  2. NSNumber *floatNumber = @3.14f;
  3. NSNumber *doubleNumber = @5.234324;
  4. NSNumber *boolNumber = @YES;
  5. NSNumber *charNumber = @'a';
  6. int x = 3;
  7. float y = 5.33f;
  8. NSNumber *expressNumber = @(x * y);
  9. NSArray *animalArr= @[@"cat",@"dog",@"mous",@"badger"];
  10. /*
  11. 例如:NSArray *A= @[@"cat",@"dog",nil,@"badger"];
  12. 但是:NSArray *B = [NSArray arrayWithObjects:@"cat",@"dog",nil,@"badger", nil];
  13. A:数组中有nil 会出现异常
  14. B:中的元素为 @"cat",@"dog", 而不会报错,但是数组的元素偷偷减少了
  15. 字面量语法可以帮助我们避免这种错误,
  16. */
  17. NSDictionary *personData = @{@"firstNmae":@"王",@"lastName":@"二小",@"age":@"18"};

需要注意的

4.多用类型常量,少用#define 预处理指令

注意

5.用枚举表示状态,选项,状态码

要点

对象、消息、运行时

理解属性

Bundle version自动递增


KVO 中最后一个参数 context 只能输入NSString 类型 可以用来传值


iOS系类教程之用instruments来检验你的app http://www.cocoachina.com/industry/20140114/7696.html


iOS应用崩溃日志分析 http://www.cocoachina.com/industry/20130725/6677.html

cell 刷新不起作用 http://blog.csdn.net/jimjarry/article/details/10116339


图片过大会导致内存不足,闪退现象

有个闪退问题,困扰了我两天了,才发现,轮播图的图片过大,一张有10多M,所以轮播图一开始动,就闪退,真是日了狗


下载文件

  1. + (void)downloadFileWithUrl:(NSURL *)url
  2. fileName:(NSString *)fileName
  3. completeHandle:(void (^)(BOOL, NSURL *))complete {
  4. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  5. manager.responseSerializer = [AFHTTPResponseSerializer serializer];
  6. NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:[NSURLRequest requestWithURL:url] progress:nil destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
  7. NSString *document = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
  8. NSData *data = [NSData dataWithContentsOfURL:targetPath];
  9. NSURL *fileUrl = [NSURL URLWithString:[NSString stringWithFormat:@"file://%@/%@", document, fileName]];
  10. BOOL success = [data writeToURL:fileUrl atomically:YES];
  11. if (success) return fileUrl;
  12. return nil;
  13. } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
  14. if (error) {
  15. complete(NO, nil);
  16. }
  17. if (filePath == nil) {
  18. complete(NO, nil);
  19. }
  20. complete(YES, filePath);
  21. }];
  22. [downloadTask resume];
  23. }

报错 receiver 'A' for class message is a forward declaration

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注