搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
天景科技苑
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
AI大模型:能源行业的救星还是颠覆者?_能源大模型
2
浅谈Oracle RAC --集群管理软件GI_oracle gi
3
力扣104 二叉树的最大深度
4
Vivado软件初探:FPGA编程基础操作
5
web前端上传图片到Java后端,并保存到本地_前端怎么传照片给后端
6
ARM Trusted Firmware User Guide_linux-firmware20220411
7
Navicat创建数据库/表的基础操作_navicat怎么创建数据表
8
MySQL之慢SQL_mysql 的mansql
9
【数学建模】二元非线性回归(华数杯比赛)(Matlab代码实现)_二元非线性回归模型
10
单链表的快速排序_快速排序法有一个带头节点的整数单链表l,设计一个算法,将所有的负数节点移动到前
当前位置:
article
> 正文
ios面试_ios mianshi
作者:天景科技苑 | 2024-08-29 09:28:44
赞
踩
ios mianshi
驼峰命名 UserSexMan
NSIntegerNSUInteger CGFLOAT
枚举 typedef NS_ENUM(NSInteger,UserSex){UserSexMan,UserSexWoman}
字符串 copy
–(instancetype)initwith构造方法 ,+(instancetype)modelwith
Readonly 和 readwrite
都针对对象,Strong持有对象所有权,weak不持有对象所有权
Weak使用时:委托规避循环引
Storyboard 拖拽控件使用weak
Assign修饰任意类型指针 weak指针对象如果被释放 weak指针自动置为nil assign不会自动置为nil需要手动
Copy(不可变副本) block函数使用 栈区分配小内存nsstringnsarraynsdictionary存在可变类型需要使用mutablecopy(可变副本)
Arc下 weak在dealloc中不需要对其置为nil
Atomic 线程安全的处理 加了个锁 【lock lock】 ,非多线程nonatomic
Nsstringfromclass(【self class】)Self 是当前对象类型名称 super 当前响应消息对象(还是该对象)的父类方法
Class结构体 类的isa指针指向描述一个源类(subclass)(属性列表 方法列表)
类方法属于类对象 实例方法属于实例对象 类方法类对象调用 实例方法实例对象调用,类方法self表示类对象 实例方法self表示实例对象 类方法不可以方位成员变量 实例方法可以访问成员变量 类方法可以调用类和实例方法 实例方法既可以调用类方法也可以调用实例方法
@synthesize重命名属性
Protocol协议中可以使用属性@property 限定协议接口规范 必须实现此属性
类别category 中可以使用属性 可以对源类的成员变量和属性公开化
Runtime运行时 可以在运行中添加对象属性obj_setassociatedobject(对象,属性名称,值,类型)obj_getassociatedobject
浅复制影子 深复制克隆人 销毁后不一样
类别 创建私有方法的向前引用 分散类的实现 非正式协议
动态运行时 obj_sendmsg(id reciver ,selector)
Perfomselector(sel)选择器 间接调用方法
懒汉模式 延迟加载 重写get方法
Frame和bounds cgrect坐标不一样
推送
Tableview 用flag或属性来关联多个表格
序列化 Plist文件 coredata sqlite3 nsuserdefault plist识别自定义对象(序列化 ) nsdata data=[nskeyedarchiver archiveddatawithrootobject:对象] 对象必须遵守协议nscoding encodewithcoder 解挡 initwithcoder
安全释放 需要将指针置空 p release p=nil
响应者链 userinteractionenabled=yes 开启响应者链中加按钮点击事件
Imagenamed花费内存大 (小图)imagewithcontentsoffile自动释放池和initwithcontentsoffile 手动释放
沙盒 documents 配置信息 开机动画 背景音乐 plist 图片 library 用户缓存和下载 tmp临时数据
Strong 计数n+1 源对象更新strong会更新
Socket tcpudp服务器监听 等待循环 客户端请求链接ip和端口 连接确认握手
代理委托
委托人定义协议委托@protocol entruster_viewcontrollerdelegate<object> -(void)showmsg; @end ,
执行人是谁@propery(assign,nonatomic)id<entruster_viewcontrollerdalegate> delegate;
拜托执行人做某事-(void)tellsomeonedosomthing;{判断执行人能够做某事if(self。Delegate respondstoselector:@selector(showmsg)){self。Delegate performselector:@seletor(showmsg)}}
执行人实现协议<entruster_viewcontrollerdelegate> ,-(void)showmsg{nslog(“”);
故事中 创建两个人 让委托人的delegate属性执行人是执行人 【委托人 tellsomeonedosomething
观察者模式
观察者 注册到系统观察者中心[nsnotificationcenter defaultcenter] addobserver:self selector:@selector(shout) name:@”houseburning” object:nil]
观察者 -(void)shout{nslog(“dddddddd”)}
别观察者 观察者中心发出通知 [nsnotificationgcenter defaultcenter] postnoficationname “@”houserburning”,object:nil]
着火 【house burning】
Mvc model view controller view层构造方法-(instancetype)initwithframe(cgrect)frame中{ 控件成员变量addsubview return self}, 类方法中指定model -(void)setdatamodel:(model_viewcontroller *)datamodel view和model关系 set方法model
工厂模式 对象创建的时机 核心方法+(fruit)createfruitwithname:(nsstring)fruitname{class class = nsclassfromstring(fruitname); fruit *tempfruit = [class alloc] init]}; fruit *app = [fruitfactury createfruitwithname:@”apple”];
单例模式单例方法 +(Globle*)shareGloble 必须使用单例方法
Oc支持多重协议 断点调试 控制台输入po 属性 变量 方法
懒加载就是重写一个控件的get方法
Gcd 队列分为并行和串行队列 串行队列是主队列 并行队列是其他除了主队列的收拾并行队列 串行队列是一个执行完毕后才执行后一个 并行队列是一个任务开始后下一个任务才开始执行
主线程 dispatch_async(dipathc_get_main_queue().^{1});
子线程dispatch_async(dispatch_get_global_queue(DISPATHC_QUEUE_PRIORITY_DEFAULT,0),^{1})
BOLCK回调typedef void(^block)(void); @property (copy ,nonatomic) Myblock block;
控制器__weak Sencondviewcontroller *sec = self 不产生引用计数问题 在block内部使用 block = ^{sec.str=@”1”};
block赋值时候容易产生循环引用
写法 __block int a=0; block函数内部修改外部变量a的值需要在a定义时加__block修饰值a
Gcd时候必须使用__weak __typeof__(self) weakself = self修饰对象
Base main(继承tabbarcontroller) home(加自定义navgationcontroller)等业务(storyboard) 分层 和协议层 protocol
通过storyboard获取控制器 let childvc = uistoryboard(name:storyname,bundle:nil).instantiateinitialviewcontrollder()! Addchildviewcontriller(childvc)
Override varpreferredstatusbarstyle:uistausbarstyle重写statusbar
设置ui 扩展 单独注释 //MARK:设置UI界面 extension homeviewcontroller{ fileprivate func SetupUi(){setupnavgationbar(….)} fileprivate func SetupNavigationBar(){….}} 事件监听 action:#selector(buntonclick)
设置时间监听 //MARK:时间监听 extension homeviewcontroller{@objc fileprivate func buntonclick(){……….}}
扩展 import uikit extension UICOLOR{…….}
系统类扩充 便利构造函数 convenience init(){init(…..)}
Guard else
单独创建控件view封装 fileprivate var 重写init (titles:[string]){ titles=titles super.init(frame:frame)} 必须实现required init?(coder aDecoder:NSCoder){fatalError} //MARK : 设置UI setupui—-setuptitleview—–setupcontentview
For _ in 0..<count{ let b=, a.append(b)}
存储title样式 参数属性太多 import UIKit class HYTitleStyle{var height:cgfloat=44}
Swift 懒加载fileprivate lazy varcollectionview:uicollectionview={let layout=,let collecitionview=,datasouce=,registercell,returncollectionview}()
Self不能省略 1方法中与其它标识有重名 2在闭包中self不能省略
Collectionviewispagingenabled = true bounces=false scrollstotop=false
For subview in contentview.subviews remove 先清空在加进去
For(I,title) in enumerated(){ ….}
view as! uilable点击的view funcpageview(_ 本身当参数)
setcontentoffset 滚动位移 offset scollview.scolltoitem滚动到哪个item
代理继承class轻量
自定义布局 flowlayout waterfall 重写布局 override func prepare()方法准备布局 返回布局 ,一个cell对应一个uicollectionviewlayoutattributes来定义属性位置
Layoutattributesforelements 返回布局
Alamofire kingfisher afnetworkingsdwebimg
重写navgationcontroller的pushviewcontroller方法 重写pushviewcontroller
Viewwillappear方法中隐藏头部setnavgationbarhidden 消失时viewwilldisappear 显示
取系统手势放入 addgestureregongnizer(interactivepop)取得系统手势tap的action和target:运行时 class_copyivarlist 拷贝所有的属性() 遍历ivar_getname(ivars[int(i)])
粒子动画 发射器和粒子 touchesbegan{caemitterlayer发射器 caemittercell 粒子}
面向协议开发必须遵守是uiviewcontroller protocol text{} extension text where Self:uiviewcontroller{ func text(){}}
代替for let layer=layer.sublayers?.filter({$0.iskind(of:caemitterlayer.self)}).first?.removeFromsuperlayer() 链式编程
按钮的开始停止 click(sender){ isselected = !sender.isselected sender.isselected ? start(): stop()}
Uistackview 控件组
协议开发快速创建类方法 class func loadformnib()->Self{} 结构体 枚举 使用静态方法
网盘下载
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/天景科技苑/article/detail/1022147
推荐阅读
article
【
2024
年
电赛
H题自动行驶
小车
】省
一
学
长手把手从零教你
学
MSPM0
_
jy61p
的
零漂...
第十二届浙江省大
学
生电子设计竞赛终于落下帷幕了,名单已公示,几家欢喜几家愁?我觉得每
一
位经历过
电赛
的
朋友都称得上英雄,我...
赞
踩
article
QT
Quick
QML
实例之定制
TableView
...
视图(如ListView)中请求模型的数据时,视图会调用 data() 函数,并传递相应的 QModelIndex 和 ...
赞
踩
article
【
浏览器
】
谷歌
浏览器
自带
翻译
失效
_
google
translate
没作用...
背景在Learn C++ – Skill up with our free tutorials学c++时,本来还可以
翻译
...
赞
踩
article
JavaScript
设计
模式
之
组合
模式
_js设计
模式
之
组合
模式
...
引我们知道地球和一些其他行星围绕着太阳旋转,也知道在一个原子中,有许多电子围绕着原子核旋转。我曾经想象,我们的太阳系也许...
赞
踩
article
AMD
Opteron
...
[url]http://baike.baidu.cn/view/413788.htm[/url]
Opteron
(皓龙...
赞
踩
article
java
list
分段
_
Java
util
.
List
如何实现列表
分段
处理...
java
.
util
.
List
分段
使用google的guava类库对
List
分段
处理
List
int
List
= Lis...
赞
踩
article
Linux
进程
|
进程
优先级
&
进程
的
环境变量
...
本文主要内容为
进程
的
优先级
和
进程
的
环境变量
,其中含有查看
进程
、
优先级
概念、
环境变量
概念等详细内容
Linux
进程
| 进...
赞
踩
article
小迪
安全
v2023
笔记
基础入门_
小迪
2023
笔记
‘...
小迪
安全
2023
笔记
_
小迪
2023
笔记
‘
小迪
2023
笔记
‘ ...
赞
踩
article
多
研究些
架构
,
少谈些
框架
(1) -- 论
微
服务
架构
的核心概念_
微
服务
架构
多
语言...
微
服务
架构
和SOA区别
微
服务
现在辣么火
,
业界流行的对比的却都是所谓的Monolithic单体应用
,
而大量的系统在十几年前...
赞
踩
article
六个步骤学会使用
Python
爬虫
爬取
数据
_
python
可以
爬取
数据
吗...
本文详细介绍了使用
Python
进行网络
爬虫
的六个步骤,包括安装requests和BeautifulSoup库、获取hea...
赞
踩
article
STM32F373
SDADC
DMA HAL...
STM32F373
单片机
SDADC
读取,采用DMA模式_stm32f373 sdadcstm32f373 sdadc ...
赞
踩
article
2019史上最全
java
面试
题
题
库
大全
800
题
含答案
_
软件
实习生
java
笔试
题
...
2019史上最全
java
面试
题
题
库
大全
800
题
含答案
。
_
软件
实习生
java
笔试
题
软件
实习生
java
笔试
题
...
赞
踩
article
【
小迪
安全
学习
笔记
】基础入门-
系统
及
数据库
等...
本文介绍了从操作
系统
、
数据库
到第三方软件的
安全
学习
笔记
。内容包括通过各种方式识别操作
系统
类型,如Windows和Linu...
赞
踩
article
玩转四
旋翼
无人机
(
攒机
基础
1
)
_
f450
桨叶尺寸表...
本文介绍了攒四
旋翼
无人机
的
基础
知识,包括选择不同轴距的机架、材料的选择,重点讲解了Pixhawk飞控系统的优势、传感器配...
赞
踩
article
eslint
搭配
vscode
的
简单
使用
_
vscode
使用
eslint
...
前言刚开始时,由于嫌麻烦,并没有安装
eslint
,最近在新
的
项目上
使用
了
eslint
再配合
vscode
的
插件,真是爽
的
不...
赞
踩
article
数据
标注
业务
和
流程简介_
数据
标注
的
过程...
景联文科技提供语音、图像、文本、视频、点云全领域
数据
处理能力,涵盖大模型、智慧城市、智能家居、智慧金融、智慧教育、智能安...
赞
踩
article
Chrome
夜间模式
插件
(
Dark
Reader
)_
darkreader
...
夜间模式
插件
_
darkreader
darkreader
...
赞
踩
article
无人机
+
光电
吊舱
:
2K
30
倍
混合
变焦
光电
吊舱
技术详解_
光电
吊舱
拆机...
综上所述,
2K
30
倍
混合
变焦
光电
吊舱
技术的未来发展方向和趋势将受到多个因素的影响,但总体来说,技术升级和创新、集成化和...
赞
踩
article
创建
并运行一个
Spring
Boot
项目
_
springboot
项目
怎么运行...
利用 IDEA
创建
一个
Spring
Boot
项目
、利用网页
创建
一个
Spring
Boot
项目
。_springb...
赞
踩
article
外
包干
了
2年
,
快要废
了
...
...
简单的说下
,
我大学的一个同学
,
毕业后我自己去
了
自研的公司
,
他去
了
外包
,
快两年
了
我薪资、技术各个方面都有
了
很大的提升
,
他在...
赞
踩
相关标签
单片机
嵌入式硬件
qt
开发语言
qml
谷歌浏览器
设计模式
java list 分段
linux
安全
笔记
soa
架构
分布式
python
爬虫
stm32
java
面试
jvm
职场和发展
js
javascript
前端