美文网首页
IOS学习方向

IOS学习方向

作者: 烟雨云渊 | 来源:发表于2017-08-28 20:26 被阅读0次

本篇主要是总结:1.自己在过去一年以来的学习经验以及不足;
2.接下来应该怎么去学习,学习那些方面

所取得的成绩

1.基本属性的运用。

strong,weak,copy,assign,nonatomic,atomic,copy等属性修饰的作用有了一个比较明确用法。一般默认的是strong,也就是强引用,而为了避免循环引用时,用weak,修饰string时,用copy,以得到新的内存分配,而不只是原来的引用。所有的属性,都尽可能使用nonatomic,以提高效率,除非真的有必要考虑线程安全。有关copy,retain,assign,retain是指针拷贝,copy是内容拷贝,使用assign: 对基础数据类型 (NSInteger)和C数据类型(int, float, double, char,等)。在拷贝之前,都会释放旧的对象。,可以参考OC中assign、copy 、retain等关键字的含义.

2.OC中页面的传值

OC中传值我现在熟悉的有1.属性传值;2.代理传值 3.通知传值 4.block传值 5.全局变量 可以参考这篇浅谈iOS常用的几种传值方式

3.数据的存储方式 转自:iOS 数据存储的常用方式
1.xml属性列表(plist)归档

只能存储基本数据类型(NSString、NSDictionary、NSArray、NSData、NSNumber

NSString *docPath =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES)[0];
    // 拼接要保存的地方的路径
    NSString *filePath = [docPathstringByAppendingPathComponent:@"str.plist"];
    // 1、写入数据
    [array writeToFile:filePath atomically:YES];
    // 2、 读取数据
    NSArray *array = [NSArray arrayWithContentsOfFile:filePath];
2.偏好设置

UserDefaults设置数据时,不是立即写入,而是根据时间戳定时地把缓存中的数据写入本地磁盘。所以调用了set方法之后数据有可能还没有写入磁盘应用程序就终止了。出现以上问题,可以通过调用synchornize方法强制写入

用法:

NSUserDefaults *UserDefaults = [NSUserDefaultsstandardUserDefaults];
  // 1、写入
  [UserDefaults setBool:NO forKey:@"isLogined"];
  // 强制写入
  [defaults synchornize];  

  // 2、读取
  BOOL isVisble = [UserDefaults boolForKey:@"isLogined"];

其实,它存储的就是一个字典

3.归档与反归档

基本使用:需要归档的模型类必须要遵守NSCoding协议,然后模型实现类中必须实现两个方法:1>encodeWithCoder ->归档;2> initWithCoder: - > 解档

使用注意
如果父类也遵守了NSCoding协议,请注意:
应该在encodeWithCoder:方法中加上一句

[super encodeWithCode:encode]; // 确保继承的实例变量也能被编码,即也能被归档

应该在initWithCoder:方法中加上一句

self = [super initWithCoder:decoder]; // 确保继承的实例变量也能被解码,即也能被恢复

示例

// 1. 自定义模型类Person

// 1.1 Person.h文件
#import <Foundation/Foundation.h>

// 只要一个自定义对象想要归档,必须要遵守NSCoding协议,并且要实现协议的方法
@interface Person : NSObject<NSCoding>

@property (nonatomic, assign) int age;

@property (nonatomic, strong) NSString *name;

@end

// 1.2 .m实现文件
#import "Person.h"

#define KName @"name"
#define KAge @"age"

@implementation Person

// 什么时候调用:当一个对象要归档的时候就会调用这个方法归档
// 作用:告诉苹果当前对象中哪些属性需要归档
- (void)encodeWithCoder:(NSCoder *)aCoder
{
    [aCoder encodeObject:_name forKey:KName];
    [aCoder encodeInt:_age forKey:KAge];
}

// 什么时候调用:当一个对象要解档的时候就会调用这个方法解档
// 作用:告诉苹果当前对象中哪些属性需要解档
// initWithCoder什么时候调用:只要解析一个文件的时候就会调用
- (id)initWithCoder:(NSCoder *)aDecoder
{
    #warning  [super initWithCoder]
    if (self = [super init]) {
        // 解档
        // 注意一定要记得给成员属性赋值
      _name = [aDecoder decodeObjectForKey:KName];
      _age = [aDecoder decodeIntForKey:KAge];
    }
    return self;
}

@end

// 2. 实例 -》基本使用:取 / 存 数据 
// 归档
 [NSKeyedArchiver archiveRootObject: self.persons toFile:KFilePath];// 将self.persons模型对象数组 

 // 解档       
 _persons = [NSKeyedUnarchiver unarchiveObjectWithFile:KFilePath];
4.sqlite

相关文章

  • IOS学习方向

    本篇主要是总结:1.自己在过去一年以来的学习经验以及不足;2.接下来应该怎么去学习,学习那些方面 所取得的成绩 1...

  • 2021全新iOS学习方向

    iOS逆向安防学习 随着苹果对iOS系统多年的研发,iOS上的安全防护机制也是越来越多,越来越复杂。这对于刚接触i...

  • iOS技能大纲

    建立自己的知识树 建立iOS知识技能大纲,学习及工作有目标有方向。 为什么要建立知识树 没方向的船,任何方向都是逆...

  • 性能优化(一)(转载)

    原文:ios性能优化(一) 性能优化方法 关于ios系统的优化可以从下图所示的几个方向入手。 ios优化方向 一、...

  • iOS使用带字体图标的UIButton(支持各种方向)

    iOS使用带字体图标的UIButton(支持各种方向) iOS使用带字体图标的UIButton(支持各种方向)

  • iOS学习笔记:判断设备方向

    以下内容为看书过程中遇到的知识点 ,非原创.参考书目:iOS编程(第四版)华中科技大学出版社 设备方向 iOS具备...

  • 2018 开始了..

    2018的计划与展望: 计划: 1、 选对方向、找好位置 2、机器学习iOS项目 3、实践PythonAI项目、数...

  • iOS 资料文档总集

    iOS资料文档总集 iOS资料 iOS学习社区 iOS总结1 iOS总结2 iOS扩展 RunTime学习 Git...

  • iOS屏幕旋转(横竖屏)

    一、屏幕旋转方向监听 1、UIDeviceOrientation:设备方向 iOS 定义了七种设备方向: 当设备方...

  • 学习目标

    经过不断的学习,感觉自己所需要学习的东西越来越多,对此需要进行整理归纳,也让自己对一些学习有一个方向指引。 iOS...

网友评论

      本文标题:IOS学习方向

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