展开

关键词

iOS面试题梳理(二)

Objective-C 如何实现 KVO 1.注册观察者(注意:观察者和被观察者不会被保留也不会被释放) - (void)addObserver:(NSObject *)observer forKeyPath ,代理对象实现协议方法,并且需要建立代理关系才可以实现通信; 5.Block:更加简洁,不需要定义繁琐的协议方法,但通信事件比较多的话,建议使用Delegate; Objective-C修改和不可以修改类型 1.修改不可修改的集合,就是动态添加修改和不可动态添加修改。 它不是一个数据库,不仅可以使用SQLite数据库来保持数据,也可以使用其他的方式来存储数据。:XML。 提供的是对象-关系映射功能,也就是说,CoreData可以将Objective-C对象转换成数据,保存到SQL,然后将保存后的数据还原成OC对象。

420100

iOS学习——iOS 整体框架及继承框架图

通知 归档和序列化 表达式和条件判断 Objective-C语言服务 对于Foundation框架的一些基本类的使用方法详情参见:iOS开发系列—Objective-C之Foundation框架   框架的入口: #import <UIKit/UIKit.h>   ,当引入此头文件后,便可以在程序里使用何在UIKit里声明的。(PS: 当然还要把这个框架链接到你的应用程序)。 3.2 Objective-C的优点   Objective-C语言有C++ Java等面向对象的特点,那是远远不能体现它的优点的。Objective-C的优点是它是动态的。 (为了区分两个对象,我把前面提到的对象叫Objective-C对象),包括Objective-C对象的方法调度表,实现了什么协议等 等。 对象的编码和解码,下面的方法和对象的编解码(作为归档过程的一部分)有关: encodeWithCoder:和initWithCoder:是NSCoding协议仅有的方法。

1.9K70
  • 广告
    关闭

    腾讯云图限时特惠0.99元起

    腾讯云图是一站式数据可视化展示平台,旨在帮助用户快速通过可视化图表展示大量数据,低门槛快速打造出专业大屏数据展示。新用户0.99元起,轻松搞定数据可视化

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS系统架构及常用框架

    Core Data:提供了一个面向对象的数据管理解决方案,它易于使用和理解,甚至处理任何应用或大或小的数据模型。 当引入此头文件后,便可以在程序里使用何在UIKit里声明的 CoreGraphics 它是iOS的核心图形库,平时使用最频繁的point,size,rect等这些图形,都定义在这个框架名以CG 通常我们会将他们分为几类: 值对象 集合 操作系统服务:文件系统、URL、进程通讯 通知 归档和序列化 表达式和条件判断 Objective-C语言服务 NSObject Objective-C NSObject 在Objective-C也是用对象来表示的,而的isa指针指向它的metaclass(存储静态成员变量和方法)。 super_class指针:指向父。 name:名称。 cache:因为Objective-C的消息转发需要查找dispatch table甚至可能需要遍历继承体系,所以缓存最近使用的方法。 protocols:需要遵守的协议

    2.2K20

    iOS工程师必看的 20 道 面试题

    要解答这个问题,就要和Objective-C相同的数据结构设计进行比较。Objective-C,字符串,数组,字典,皆被设计为引用类型。 值类型相比引用类型,最大的优势在于内存使用的高效。 在Swift和Objective-C的混编项目中,如何在Swift文件调用Objective-C文件已经定义的方法?如何在Objective-C文件调用Swift文件定义的方法? Swift若要使用Objective-C代码,可以在ProjectName-Bridging-Header.h里添加Objective-C的头文件名称,Swift文件即可调用相应的Objective-C Swift文件若要规定固定的方法或属性暴露给Objective-C使用,可以在方法或属性前加上@objc来声明。 具体过程是在Objective-C对象调用方法时,self.tableview reload,发生了两件事。

    65040

    成为一名优秀 Swift 开发人员的 10 个小技巧

    使用 Protocol Protocol 在 Swift 可以做很多事情。使用协议,我们可以设计软件组件的行为,使其符合特定的实现。 Swift 协议类似于 Java 的接口,这是 OOP 编程中最基础的理论。 以下是使用协议的一些场景: 让 modal 与呈现它的组件进行通信; 让多个 UIViewController 或 多个 Cocoa Touch 实现相同的行为; 在 UITableCell 向父 UIViewControllers 使用标记 从 Objective-C 开始,我就一直很喜欢标记。当控制器有成百上千行代码时,标记就显得很重要了。使用标签来分割和管理代码非常重要,可以在代码快速导航。 使用扩展并合理使用它们来创建公共库 我很喜欢 Swift 扩展。在使用 Objective-C 时,我总是不情愿地使用继承。当然这并不总是错误的,正确的使用子类也不会出错。

    10940

    Objective-C的内省(Introspection)

    内省(Introspection)是面向对象语言和环境的一个强大特性,Objective-C和Cocoa在这个方面尤其的丰富。 这些详细信息包括对象在继承树上的位置,对象是否遵循特定的协议,以及是否可以响应特定的消息。NSObject协议定义了很多内省方法,用于查询运行时信息,以便根据对象的特征进行识别。 明智地使用内省可以使面向对象的程序更加高效和强壮。它有助于避免错误地进行消息派发、错误地假设对象相等、以及类似的问题。 下面的部分将介绍如何在代码中有效地使用NSObject的内省方法。 1 isKindOfClass:Class 检查对象是否是那个或者其继承实例化的对象 1 isMemberOfClass:Class 检查对象是否是那个但不包括继承而实例化的对象 示例: Objective-c Objective-c代码 // ... if (!

    45760

    Objective-C的内省(Introspection)

    内省(Introspection)是面向对象语言和环境的一个强大特性,Objective-C和Cocoa在这个方面尤其的丰富。 这些详细信息包括对象在继承树上的位置,对象是否遵循特定的协议,以及是否可以响应特定的消息。NSObject协议定义了很多内省方法,用于查询运行时信息,以便根据对象的特征进行识别。 明智地使用内省可以使面向对象的程序更加高效和强壮。它有助于避免错误地进行消息派发、错误地假设对象相等、以及类似的问题。 下面的部分将介绍如何在代码中有效地使用NSObject的内省方法。 1 isKindOfClass:Class 检查对象是否是那个或者其继承实例化的对象 1 isMemberOfClass:Class 检查对象是否是那个但不包括继承而实例化的对象 示例: Objective-c Objective-c代码 // ... if (!

    24750

    iOSCocoa框架·Runtime及isa指针知识·填坑

    不是编程语言,因为在Cocoa开发你可以使用各种语言;也不是开发工具,你可以在命令行上就可以创建Cocoa程序。 通知 归档和序列化 表达式和条件判断 Objective-C语言服务 1.3 UIKit框架 应用程序可以通过三种方式使用UIKit创建界面 在用户界面工具(interface Buidler)从对象库里 (为了区分两个对象,我把前面提到的对象叫Objective-C对象),包括Objective-C对象的方法调度表,实现了什么协议等等。 这些内省方法有助于找出对象在层次的位置,确定对象是否实现特定的方法,以及测试对象是否遵循某种协议。 NSObject声明了一些于对象编码有关的方法: classForCoder:、replacementObjectForCoder:、和awakeAfterUsingCoder:。

    58820

    WWDC笔记 - Advancements in the Objective-C Runtime

    的指针,包含了的名称,方法,协议,实例变量等等编译期确定的信息。 ,之所以要这么设计是因为 Objective-C 是动态语言,你可以在运行时更改它们方法,属性等,并且分类可以在不改变设计的前提下,将新方法添加到。 通过测量实际设备上的使用情况,我们发现大约 10% 的实际会存在动态的更改行为,动态添加方法,使用 Category 方法等。 Tips:Advances in Objective-C 在我们查看对象指针时,在 64 位系统,我们会看到 16 进制地址0x00000001003041e0,我们把它转换为二进制表示如下图 [image 总结 在 2020 年中,Apple 针对 Objective-C 做了三项优化 数据结构变化:节约了系统更多的内存。 相对方法地址:节约了内存,并且提高了性能。

    8701815

    Objective-C通过下标的方式访问自定义数据模型属性

    Objective-C通过下标的方式访问自定义数据模型属性       在Objective-C,可以通过下标来访问数组的元素,如果数组是NSMutableArray类型的可变数组,则还可以通过下标来对数组的元素进行赋值操作 NSMutableArray alloc]init];     array[0] = @"one";     NSString * str = array[0];     NSLog(@"%@",str);        对于Objective-C ,dic[@"name"]);       对于开发者自定义的的数据结构,一般会采用getter与setter方法来对其属性进行访问,虽然官方文档上没有提及,实际上,可以通过实现一些方法,来使自定义的数据模型支持使用下标来进行访问 创建一个数据模型,使其继承自NSObject,如下: MyModel.h @interface MyModel : NSObject @end MyModel.m @implementation MyModel 然而其也有很大的弊端,代码的易调试和可读性都大大的降低,因此,没有特殊需求,一般不要使用这种方式来构建模型。 专注技术,热爱生活,交流技术,也做朋友。 ——珲少

    30210

    独家 | 利用Cosmos微服务改善Netflix视频质量

    随着VMAF的发展,它已经与Netflix中越来越多的编码和流媒体工作流集成到一起,通过扩展的方式来促进视频质量的创新和优化。 Reloaded系统负责处理导入的媒体文件,视频、音频和字幕等等,并使其可在流媒体服务上播放。Reloaded系统是一个成熟和扩展的系统,然而,其整体架构使得创新的速度得以减缓。 更为重要的是,在Reloaded系统,视频质量度量与视频编码同时生成。 这种紧耦合意味着:如果不进行重新编码,便不可能实现以下目标: A) 推出新的视频质量算法; B) 维护目录数据的质量(:通过BUG 修复)。 使用measureQuality端点调用VQS,VQS API层将外部请求转换为VQS特定的数据模型。 2. 启动工作流。

    7930

    【IOS】IOS开发问题解决方法索引(三)

    与js交互 如何在Objective-C里面声明私有方法. http://hi.baidu.com/shiqyn/item/52887ff19d3df61aa729885f Objective-C 本身并没有私有方法这个概念,声明在 .h 文件的方法都是公有的。 8 objective-cNSString默认编码格式不是utf-8 iOS NSString 转换为UTF-8编码 http://blog.csdn.net/u011872945/article 11 objective-csetter方法调用时机 在保存成员的数据时,需要使用self.***的操作来调用setter方法,才能最终保存数据。 如何在项目中设置使用GDataXML解析库 http://www.cnblogs.com/lovecode/articles/2305416.html IOS学习笔记27—使用GDataXML解析XML

    10720

    JSONModel源码解析 原

    但是这种方式十分不灵活,例如如果网络数据的字段与我们数据模型的字段不一致,某些网络数据的字段可能为nil等等都需要开发者单独的处理。使用JSOMModel可以十分方便的处理映射过程的各种情况。 二、JSOMModel概览     平时在使用JSOMModel框架时,往往只会用到JSOMModel这一个,其实JSOMModel还封装了一套网络请求逻辑,你可以直接对某个对象调用请求来映射成为数据模型 有了这3个协议,在声明属性时,我们可以十分容易的设定他们的解析规则,在JSONModel协议除了可以用来规定解析规则外,还可以用来指定自定义数据类型的解析,只是我们需要自己定义一个协议,名称与自定义名一致 nonatomic,strong)NSString * lastName; @property(nonatomic,strong)Address

    * address; @end 需要注意,在Objective-C 在对象的初始化方法,首先使用runtime获取所有的属性和属性的修饰内容,所谓修饰内容,即是指属性名称,类型,所遵守的协议,以及是否忽略,是否可选,是否是主键等内容(过程中会使用到属性映射器keyMapper

    45820

    JavaScriptCore全面解析

    使用Apple提供的JavaScriptCore框架,你可以在Objective-C或者基于C的程序执行Javascript代码,也可以向JavaScript环境插入一些自定义的对象。 这段代码展示了如何在Objective-C执行一段JavaScript代码,并且获取返回值并转换成OC数据打印 Output 三、 JSVirtualMachine 一个JSVirtualMachine 六、 JSExport JSExport协议提供了一种声明式的方法去向JavaScript代码导出Objective-C的实例及其实例方法,方法和属性。 1. 在Objective-C通过@property声明的属性决定了JavaScript的对应属性的特征: Objective-C的属性,成员变量以及返回值都将根据JSValue指定的拷贝协议进行转换 八、 Prototype JavaScript对于有基于的语言经验的开发人员来说有点令人困惑 (Java或C ++) ,因为它是动态的,并且本身不提供实现。

    12220

    Python称霸在即,3年后将取代Java成为最受欢迎开发语言

    TIOBE索引基于Web搜索跟踪编程语言的流行程度,使用一个公式来评估搜索引擎(Google,Yahoo和Bing)与编程语言相关的搜索。 Swift在去年同期排名第15位,上个月排名第18位,而其前身Objective-C语言本月排名第12位,评分为1.391。 Tiobe分析师预计Objective-C将在两年内退出前20名。 即使要完全理解和运行'hello world'这样最简单的程序,你需要掌握、静态方法和包的概念。 C相对简单一点,没那么多复杂的概念。但是在显式内存管理方面新手会备受打击。 同时它是面向对象的,应用领域也非常广泛,从创建网站到应用程序开发、再到创建不同类型的数据模型,都游刃有余。 这是一个全球性组织,面向对Python编码感兴趣的女性和其他性别少数群体。

    26140

    Python称霸在即,3年后将取代Java成为最受欢迎开发语言

    TIOBE索引基于Web搜索跟踪编程语言的流行程度,使用一个公式来评估搜索引擎(Google,Yahoo和Bing)与编程语言相关的搜索。 Swift在去年同期排名第15位,上个月排名第18位,而其前身Objective-C语言本月排名第12位,评分为1.391。 Tiobe分析师预计Objective-C将在两年内退出前20名。 即使要完全理解和运行'hello world'这样最简单的程序,你需要掌握、静态方法和包的概念。 C相对简单一点,没那么多复杂的概念。但是在显式内存管理方面新手会备受打击。 同时它是面向对象的,应用领域也非常广泛,从创建网站到应用程序开发、再到创建不同类型的数据模型,都游刃有余。 这是一个全球性组织,面向对Python编码感兴趣的女性和其他性别少数群体。

    32550

    代码优化之Analyze检测

    一、Clang Static Analyzer简介 https://clang-analyzer.llvm.org/ Clang Static Analyzer是一个源码分析工具用于在C, C++和Objective-C 类似于编译器警告(这对于查找编码错误很有用),但更进一步,一般使用运行时调试技术(测试)发现错误。 Clang Static Analyzer的目标是提供工业级静态分析框架,用于分析CC ++和Objective-C程序,这些程序是免费提供的,扩展的,并且具有高质量的实现。 严格地说,Analyzer是Clang的一部分,因为Clang包含一组重用的C ++库,用于构建强大的源代码级工具。 3、Core Foundation/Objective-C Core Foundation/Objective-C的一些编码规范,比如在一些生命周期的方法要调用父的方法,会有一些操作 4、Memory

    10620

    2019最新iOS面试题及答案

    答: 设计模式:并不是一种新技术,而是一种编码经验,使用比如java的接口,iphone协议,继承关系等基本手段,用比较成熟的逻辑去处理某一种类型的事情,总结为所谓设计模式。 在里面声名一个私有方法 @private可以用来修饰私有变量 在ObjectiveC,所有实例变量默认都是私有的,所有实例方法默认都是公有的 64.Object-C有多继承吗? 实现文件,即的实现代码可以使用obj-c的东西,可以import,只是后缀是mm。 Core Data:提供了一个面向对象的数据管理解决方案,它易于使用和理解,甚至处理任何应用或大或小的数据模型。 动态识别 4).指标计算 5).弹性讯息传递 6).不是一个过度复杂的 C 衍生语言 7).Objective-CC++ 混合编程 objc缺点: 1).不支援命名空间 2).不支持运算符重载

    1.6K20

    Redis,MemCached,MongoDB 概述

    调研项目主要有Redis、 MemCached、 MongoDB,以及Amazon的DynamoDB Redis 是一个开源的使用ANSI C语言编写、支持网络、基于内存亦可持久化的日志型、Key-Value 2) 持久化: Redis通常将数据存储于内存,或被配置为使用虚拟内存。 4) API 语言 支持C、 C++、 C#、 Java、 Javascript、 Lua、 Objective-C、 Perl、 PHP、 Python、 Ruby、 Go等语言,更多请见:Redis 其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。 (视频等);自动处理碎片,以支持云计算层次的扩展性 3) 格式:文件存储格式为BSON(一种JSON的扩展);可通过网络访问 4) API语言:CC#、 C++、Java、JavaScript、 PHP

    56230

    扫码关注腾讯云开发者

    领取腾讯云代金券