iOS 面试知识点(六)

2020-11-24  本文已影响0人  渐z

cocoapods 命令

git 常用命令

本地操作:

日志:

版本控制:

比较差异:

分支操作:

本地仓库与远程仓库交互:

什么是面向对象编程?

面向对象编程把面向对象的思想应用于软件开发。对象是由数据和所允许的操作组成的封装体,与客观实体有直接对应关系,类定义了具有相似性质的一组对象。继承性是对具有层次关系的类的属性和操作进行共享的一种方式。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、 刻画客观世界,并设计、构建相应的软件系统。面向对象编程有以下三大特征:

为什么说Objective-C是一种动态编程语言?

动态编程指的是程序在运行时可以改变其结构,新的函数可以被引进,已有的函数可以被删除。而Objective-C具有在运行时动态确定对象的类型,动态绑定方法的实现和动态加载资源(在运行时构建新的类,给类添加属性和方法)这几种特性。因此,Objective-C是一种动态编程语言。

atomic和non-atomic修饰的属性有什么区别?

如何使用atomic才能保证线程安全?

atomic修饰的属性,只是保证了settergetter的线程安全,并不是所有操作都是线程安全的。例如,当在不同的线程对一个原子性的可变数组分别进行插入和删除数据的操作时,就会出现问题。可以使用锁来保证线程安全。有以下几种加锁方式:

@synthesize和@dynamic分别有什么作用?

@synthesize告知编译器自动为给定属性生成set和get方法。

@dynamic告知编译器不要自动生成给定属性的set和get方法,这两个方法会由开发者手动生成。

readwrite,readonly,assign,retain,strong,copy,weak属性关键字的作用。

#import、#include 和 @class 的区别

import是Objective-C导入头文件的关键字,include是C/C++导入头文件的关键字。使用include导入头文件时,相当于拷贝导入的头文件中的声明内容。如果使用include重复导入某个头文件的话,编译器会报重复定义的错误。而使用import导入头文件,编译器会在编译时做一次判断,如果已经导入了该头文件就不会再二次导入了。如果不是C/C++文件,应尽量使用import。并且如果能在.m文件中import,就不要在.h文件中import

@class用于声明某个类,其告诉编译器它后面的内容是一个类的名称,而这个类的具体实现暂时是不知道的。而在一个类的头文件中使用import导入某个类的时候,这个类的所有信息都会被导入。如果在许多个类的头文件中都使用import导入了该类,会降低编译器编译的效率。另外,当两个类使用import互相引用时,编译器会报错,而使用@class能够避免出现错误。

delegate,block 和 notification 的区别

如何实现下拉刷新?

创建一个UIScrollView的分类,在分类中动态添加一个header属性,header是一个自定义视图,用于显示与刷新状态有关的文字,图片和活动指示器,将其添加到UIScrollView的头部。为UIScrollViewcontentOffset属性注册观察者,在contentOffset更改时,根据当前contentOffset来判断此时UIScrollView处于准备刷新正在刷新中刷新完毕这三个状态中的哪一种,并根据状态来设置header当前需要显示的内容。

如何使用UICollectionView实现无限循环轮播图?

根据需要展示的图片资源构造一个图片数组,该图片数组包含所有需要展示的图片,同时,把最后展示的图片拷贝一份插入到图片数组的最前面,把最先展示的图片拷贝一份插入到图片数组的最后面,然后将该数组设置为UICollectionView的数据源。在UICollectionView滑动到展示图片数组中的最后一张图片的位置时,将UICollectionViewcontentOffset隐式地切换到展时图片数组中的第二张图片的位置。在UICollectionView滑动到展示图片数组中的第一张图片的位置时,将UICollectionViewcontentOffset隐式地切换到展时图片数组中的倒数第二张图片的位置。这样就实现了无限循环展示图片的效果。

内购漏单的解决方案

如何实现 WKWebview 秒开

自动化打包

上一篇 下一篇

猜你喜欢

热点阅读