YYModel源码学习,Android学习笔记在互联网上火了


- (instancetype)initWithMethod:(Method)method;



##YYClassPropertyInfo

类结构中包含name、getter、setter属性,用于保存成员属性的信息。通过以下函数进行赋值


- (instancetype)initWithProperty:(objc_property_t)property;



##YYClassInfo

类结构中包含superCls、metaCls、name等一些类相关的信息。同时也将上述三个类做为类的一部分。通过以下函数进行赋值。


+ (nullable instancetype)classInfoWithClass:(Class)cls;



此函数做了2部分工作,1)判断是否有缓存,有的话就取缓存数据 2)没有缓存数据的话通过以下函数进行赋值然后缓存。


- (instancetype)initWithClass:(Class)cls;



_YYModelPropertyMeta

类结构中主要包含

YYClassPropertyInfo对象、

name、mappedToKey等一些相关的信息,用来描述当前实例的属性信息。

通过以下函数进行赋值


+ (instancetype)metaWithClassInfo:(YYClassInfo *)classInfo propertyInfo:(YYClassPropertyInfo *)propertyInfo generic:(Class)generic;



_YYModelMeta

类结构中包含了当前类的信息和不同情况下的属性数组。看定义的类结构最直观。


@interface _YYModelMeta : NSObject {

    YYClassInfo *_classInfo;

    /// Key:mapped key and key path, Value:_YYModelPropertyMeta.

    NSDictionary *_mapper;

       /// Array, all property meta of this model.

    NSArray *_allPropertyMetas;

    /// Array, property meta which is mapped to a key path.

    NSArray *_keyPathPropertyMetas;

    /// Array, property meta which is mapped to multi keys.

    NSArray *_multiKeysPropertyMetas;

    /// The number of mapped key (and key path), same to _mapper.count.

    NSUInteger _keyMappedCount;



   //剩下的省略。。

}



数据流向


看完类的大致结构,再来看下从调用YYModel提供给我们的接口开始,函数之间是如何跳转的,传入的参数又经过了那几道转换。

###yy_modelWithJSON

该接口接受NSDictionary, NSString,NSData三种类型的json串,返回一个新的是实例对象。实现主要包含以下两部分,重点在第二个函数实现。


[self _yy_dictionaryWithJSON:json]  //转成NSDictionary类型数据

[self yy_modelWithDictionary:dic]  //传入NSDictionary数据,返回实例对象



来看下yy_modelWithDictionary是如何将dic数据转换成对象的。核心的函数也是两个。


//根据调用的类,对YYClassIvarInfo、YYClassMethodInfo、YYClassPropertyInfo、YYClassInfo、_YYModelPropertMeta、_YYModelMeta进行赋值

[_YYModelMeta metaWithClass:cls] 

//对类的属性进行赋值操作

[one yy_modelSetWithDictionary:dictionary]



通过这3个函数就实现了json串到对象的转换,看似简单,其实函数中还包含不少逻辑,还是以图的形式来的实在。看下图,函数的执行顺序从左到右

image

yy_modelToJSONObject


该函数的流程相对简单点,从_YYModelMeta获取相关的数据赋值给NSDictionary对象。不再做扩展。

重点功能剖析


自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

推荐学习资料


  • 脑图
    360°全方位性能调优

备注Android)**
[外链图片转存中…(img-LNm2iSAP-1712012773591)]

推荐学习资料


  • 脑图
    [外链图片转存中…(img-lBjd1mlb-1712012773591)]
    [外链图片转存中…(img-5BXe7NC9-1712012773592)]
    [外链图片转存中…(img-oKK8ISo5-1712012773592)]

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android Studio是Google推出的Android应用程序开发工具,它集成了开发、调试、打包等功能。要学习使用Android Studio,需要了解以下几个方面的知识: 1. Java基础: Android开发是基于Java语言的,所以要学习Android Studio首先要掌握Java基础知识。 2. Android基础: 了解Android操作系统的基本构架和常用组件,如Activity、Service、BroadcastReceiver等。 3. Android Studio使用: 了解Android Studio的基本界面和常用功能,如创建工程、编写代码、调试程序等。 4. Android SDK: 了解Android SDK的安装和配置,以及如何使用SDK Manager来下载SDK并配置项目。 5. 练习实践: 多练习实际项目,熟悉Android Studio的使用,并不断练习和完善自己的技能。 ### 回答2: Android Studio 是一个为 Android 来开发的整体开发环境。它基于 IntelliJ IDEA ,强调速度和智能操作,并致力于为应用程序开发提供高效率的开发工具。Android Studio 的推出,使得 Android 开发者更加容易地创建高质量的应用程序。 首先,要学 Android Studio ,你需要首先了解一些基本知识。学习 Android Studio 的工具包括 Gradle 、 Kotlin 和 Java 等。通过学习这些基础知识,你可以了解不同的语言、工具和框架。 在学习 Android Studio 时要使用实战性的方法。也就是说,每次学习新的东西时,你需要找到一个相关的例子。这样可以帮助你更好地理解它。如果你使用 Android Studio 模板,这将非常有用。这些模板可以帮助你创建常见的应用程序结构,并且你可以基于这些模板创建自己的应用程序。 另外,还有很多不同的工具和插件可以帮助你学习 Android Studio 。例如, Android Studio 网站上有很多有用的文章和教程,可以帮助你更好地理解 Android Studio 。还有很多在线工具可以帮助你实现特定的功能,在初学者阶段,这些工具可以为学习的难度减轻很多。 总之,学习 Android Studio 任重而道远。需要有耐心和时间,还需要不断地尝试和实践。在这个过程中,你可以尝试教学资料、交流学习合作、进一步增强你的知识水平。通过不断的应用和实践,一定可以成为一名优秀的 Android 开发者并圆满地完成应用开发。 ### 回答3: 作为一个应用开发者,学习使用安卓应用程序开发套件非常重要。Android Studio是Google出品的最新安卓开发工具,它具有多种强大的工具和功能,可以极大地提高应用程序的开发效率和质量。在学习过程中,个人对Android Studio的理解主要体现在以下几个方面。 首先,要开始使用Android Studio,需要了解它的基本结构和工具。Android Studio主要由三个主要组件组成:IDE、SDK、和Emulator。IDE是开发者使用的主要工具。它提供了编写、测试和调试代码所需的所有基本功能,包括视觉化设计器,代码编辑器和调试工具。SDK是开发应用程序所需的软件开发包。它包括实用程序和库,可用于在应用程序中实现预定功能。Emulator是一个虚拟的安卓设备,可以用来在开发应用程序时模拟真实设备上的应用程序运行情况。 其次,一些基本的编程知识也必不可少,例如Java编程、XML语言、UI界面设计等。Java是Android Studio中最常用的编程语言,用于编写应用程序的逻辑代码;XML语言则用于设计UI界面。在学习这些基本知识时,建议首先了解Java语言特性和面向对象编程理念,熟悉它们的基本语法和数据类型。同时,也可以通过在线教程和网课等方式加强对UI设计和布局的理解。 最后,学会使用网上的资源和社区的帮助非常重要。Android Studio的开发者社区很大,有很多在线资源可以帮助开发者的开发学习,例如stack overflow、CSDN社区等。同时,Google官方的开发者网站也提供了大量的文档资料、教程、API使用说明等。 总之,Android Studio的学习需要进行持续不断的针对不同方面的学习和实践。要充分运用Android Studio的强大功能,建议在掌握基础知识的基础上,多做实际的项目练习,不断提高自己的技术水平和代码能力,才能成为一名优秀的安卓应用程序开发者。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值