首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
ios 能给NSObject添加Extension吗
2024-09-01
2020年,大厂常问iOS面试题汇总!
Runloop & KVO runloop app如何接收到触摸事件的 为什么只有主线程的runloop是开启的 为什么只在主线程刷新UI PerformSelector和runloop的关系 如何使线程保活 KVO 实现原理 如何手动关闭kvo 通过KVC修改属性会触发KVO么 哪些情况下使用kvo会崩溃,怎么防护崩溃 kvo的优缺点 runtime相关问题 结构模型 介绍下runtime的内存模型(isa.对象.类.metaclass.结构体的存储信息等) 为什么要设计metaclass c
iOS类别(Category)与扩展(Extension)-b
苹果的官方文档 Category在iOS开发中使用非常频繁.尤其是在为系统类进行拓展的时候,我们可以不用继承系统类,直接给系统类添加方法,最大程度的体现了Objective-C的动态语言特性. #import @interface NSObject (Category) - (void)myMethod; @end 这是一个最简单的Category,作用于NSObject类,给NSObject添加了一个方法. 使用Category需要注意的点: (1) Category的方法不一定非要在@imp
iOS桌面小插件 Widget Extension
iOS桌面小插件 Widget Extension 这个插件时iOS14以后才出现的,基于SwiftUI 旧项目新建时可能一堆错误,其中一个时要把插件target 开发sdk版本设置为14.0以上 新建target File - Target - Widget Extension 项目结构 @main 这里是主入口,这里可以设置小组件的 Provider以及 WidgetEntryView,以及长按后弹出框的 APP 信息设置. Provider:控制器,这里可以用来做小组件的刷新操作 Simp
ios 向工程里添加Fonts
ios 向工程里添加Fonts 1.网上搜索字体文件(后缀名为.ttf,或.odf),假如你加入的字体为微软雅黑 2.把字体库导入到工程的resouce中 3.然后在你的工程的Info.plist文件中新建一行(Add Row),添加key为:UIAppFonts(或Fonts provided by application,前者会自动转化为后者),类型为Array或Dictionary都行: 在UIAppFonts下再建立一个键值,key可以是任意的(默认的是item0),v
iOS 向模拟器里添加照片
iOS 向模拟器里添加照片 模拟器里Photos最开始时是没有照片的,有时我们做Demo时需要Photos里面的照片做测试,这时就需要把Mac上的照片导入到模拟器里.步骤如下: 1,打开模拟器 2,选中照片,把照片往模拟器里拖(这时照片会以Safari打开) 3,鼠标长按照片,弹出菜单以后,选中Save Image选项即可,这时照片就会导入到模拟器里了. 注意:一次拖动多张照片也只会添加一张,最好是一次拖动一张
iOS类别(Category)和扩展(Extension,匿名类)
Category在iOS在开发常用. 特别是对于系统扩展上课时间.我们不能继承系统类.直接添加到系统类方法,最大程度上体现Objective-C动态语言特征. #import @interface NSObject (Category) - (void)myMethod; @end 这是一个最简单的Category,作用于NSObject类.给NSObject加入了一个方法. 使用Category须要注意的点: (1) Category的方法不一定非要在@implementation中实现.也能
ios中的category与extension
http://blog.csdn.net/haishu_zheng/article/details/12873151 category和extension用来做类扩展的,可以对现有类扩展功能或者修改其功能. 在iOS中category应用是非常广泛的,系统自带的很多类都有多个category扩展功能. 一般category中可以定义新的方法.重写类原来的方法和添加readonly属性 而extension可以认为是匿名的category,但是这个extension相对于categor
iOS 9之Shared Links Extension(Safari Extensibility)
金田 (github示例源码) 在之前的Blog中有介绍了关于Safari Extensibility的 Content Blocking部分,详情可以看这里 --- iOS 9之Safari广告拦截器(Content Blocker),今天我们就来看看关于 Safari的另一个扩展点(插件)- Shared Links. 好,先来看一下如何使用该功能: 打开Safari,点击书签按钮 (像一本打开的书一样的按钮) 图1 书签按钮 选择 “@”共享分栏,就可以看到当前设备中的所有Shared L
iOS开发之NSObject的多线程
1.NSObject的多线程方法(用的时候要用@autoreleasepool{}包起来) 开启后台执行任务的方法: - (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg 苹果底层允许使用performSelectorInBackground方法在后台线程更新UI,强烈不建议这么做! 在后台线程中通知主线程执行任务的方法: - (void)performSelectorOnMainThread:(SEL)aSe
ios开发之 NSObject详解
NSObject是大部分Objective-C类继承体系的根类.这个类遵循NSObject协议,提供了一些通用的方法,对象通过继承NSObject,可以从其中继承访问运行时的接口,并让对象具备Objective-C对象的基本能力.下面我们就详细的介绍NSObject. 一.使用详解 1.加载及初始化类 /** 运行时加载类或分类调用该方法, 每个类只会调用一次 */ + (void)load { } /** 类实例化使用前需要先初始化, 一个类调用一次, 如果子类没有实现该方法则会调用父类方法
swift 如何在IOS应用图标上添加消息数
在应用图标右上角添加消息数提醒,可以很方便的告知用户该应用中有无新消息需要处理.下面用xcode 7.3.1来简要说明一下如何用swift语言进行此功能的实现. 1.修改 AppDelegate.swift // // AppDelegate.swift // RainbowDemo // // Created by Jackwang on 16/8/17. // Copyright © 2016年 Jackwang . All rights reserved. // import UIKit
IOS第二天-新浪微博 - 添加搜索框,弹出下拉菜单 ,代理的使用 ,HWTabBar.h(自定义TabBar)
********HWDiscoverViewController.m(发现) - (void)viewDidLoad { [super viewDidLoad]; // 创建搜索框对象 HWSearchBar *searchBar = [HWSearchBar searchBar]; searchBar.width = ; searchBar.height = ; self.navigationItem.titleView = searchBar; //设置titleView 是搜索框 } HW
iOS 在类别里添加成员变量的方法:objc_setAssociatedObject
今天在github上查看MJPopupViewController这个项目,发现里面用到了objc_setAssociatedObject,用来为类别添加成员变量. 我百度之后,发现有人是这样说明的: category与associative作为objective-c的扩展机制的两个特性,category即类型,可以通过它来扩展方法:associative,可以通过它来扩展属性:在iOS开发中,可能category比较常见,相对的associative,就用的比较少,要用它必须使用<objc/r
iOS中为网站添加图标到主屏幕
1 <link rel="apple-touch-icon-precomposed" href="icon.png"/> 2 <link rel="apple-touch-icon" href="icon.png"/> apple-touch-icon和apple-touch-icon-precomposed,区别就在于是否会应用iOS中自动给图标添加的那层高光.前者会自动加圆角和高亮效果 1 <
swift为UIView添加extension扩展frame
添加swift file:UIView+Extension import UIKit extension UIView { // x var x : CGFloat { get { return frame.origin.x } set(newVal) { var tmpFrame : CGRect = frame tmpFrame.origin.x = newVal frame = tmpFrame } } // y var y : CGFloat { get { return frame.o
iOS开发-为程序添加应用设置
一.设置捆绑包 设置捆绑包是应用自带的一组文件,用于告诉设置该应用期望得到用户的哪些偏好设置. 新建设置捆绑包:Command+N,在iOS部分中的Resource,选择Settings Bundle图标. 在项目窗口选择名为Settings.bundle的项目,在Root.plist中进行设置. 二.设置属性列表(Root.plist) 其实属性列表的本质就是字典,通过键来检索存储条目的类型和值. 设置的时候记得在编辑区域任意位置右击,然后选中Show Raw Keys/Values选项,用来
iOS中为网站添加图标到主屏幕以及增加启动画面
虽然没有能力开发Native App,但还是可以利用iOS中Safari浏览器的特性小小的折腾一下,做一个伪Web App满足下小小的虚荣心的. 既然是在iOS中的Safari折腾的,那么代码中利用到的也基本上都是Safari的私有属性. 添加图标到主屏幕是Web App的第一步: <link rel="apple-touch-icon-precomposed" sizes="57x57" href="icon-57.png"> &l
iOS: 学习笔记, 动态添加按钮
1. 新建iOS -> Single View Application. 2. 个性控制器文件YYViewController.m(此处修改为你相应的控制器文件名) // // YYViewController.m // StudyDynamicButton // // Created by yao_yu on 14-5-27. // Copyright (c) 2014年 yao_yu. All rights reserved. // #import "YYViewController.
iOS: 获取UITableViewCell上添加的子控件对应的cell
一.简单介绍 UITableViewCell是UITableView的核心部分,我们在开发中因为功能的扩展经常需要自定义,以便在其上面添加子控件,例如button.label等.添加后获取这些子控件的cell,因为iOS不同系统的缘故此处会有一个坑,可能会崩溃.接下来以button为例来解决. 二.崩溃情况 在自定义cell的时候,在cell上添加了一个button,然后在controller中调用这个button的时候要获取到cell,在iOS6中直接button.superView就可以.
iOS - UICollectionView 瀑布流 添加表头视图的坑
UICollectionView 瀑布流 添加表头视图的坑 首先是,需求加了个头视图在顶部,在collectionView中的头视图跟TableView的不一样,TableView的表头只要设置tableview.tableHeaderView就可以了. collectionView 怎么添加这样的效果的呢 有两种思路 第一种:在collectionView的段头代理中设置 (只在第一段中设置) 第二种:改变 collectionView 的内延距离, 然后添加在内延空白的位置. 第一种 //
iOS分类(category),类扩展(extension)—史上最全攻略
背景: 在大型项目,企业级开发中多人同时维护同一个类,此时程序员A因为某项需求只想给当前类currentClass添加一个方法newMethod,那该怎么办呢? 最简单粗暴的方式是把newMethod添加到currentClass中,然后直接实现该方法就OK了. 但考虑到OC是单继承的,子类可以拥有父类的方法和属性. 如果把newMethod写到currentClass中,那么currentClass的子类也会拥有newMethod.但真正的需求是只需要currentClass拥有newMeth
热门专题
STM32F103怎么设置ADC基准电压参考电压
driverstore可以删除吗
thress 多材质 gltf 无法贴图
openlayers高亮边线
按键精灵 剪贴板批量
matlabzhongmovie函数
多条件分类列表筛选功能
python物理周期数据分析
jbox.alert close 回调
墨西哥城和美国中部时区
安装SQL后还能修改计算机名称吗
利用python实现垃圾邮件识别
python init函数后面的super是什么意思
当前断点不会被命中,没有可执行
axios中headers无效
Java opencv图像腐蚀
centos 搭建lamp
launch.json配置 windows mingw
dism 系统备份 卷影复制不可用
videojs设置播放节点