
iOS-OC
文章平均质量分 69
iOS
MinggeQingchun
这个作者很懒,什么都没留下…
展开
-
iOS-报错“No visible @interface for ‘NSObject‘ declares the selector ‘XXXX:‘”
这个错误一般是NSObject对象不符合某种协议,不能调用某个方法最常见的就是NSCopying协议 ,NSMutableCopying协议,NScoding协议等1、如NSObjectbu'fu原创 2021-11-12 08:46:00 · 2730 阅读 · 4 评论 -
iOS-APP启动完成过程,以及耗时优化
一、APP启动完成过程1、解析Info.plist2、Mach-O加载3、程序执行二、影响性能因素三、耗时优化原创 2021-11-06 20:08:30 · 783 阅读 · 0 评论 -
iOS-NSCoder 和 NSCoding
1、为了,iOS提供基本的文件API、Property List序列化、SQLite、CoreData以及NSCoding。对于轻量级的数据要求,NSCoding因其简单而成为一种比较合适的方式。NSCoding是一个你需要在数据类上要实现的协议以支持数据类和数据流间的编码和解码。数据流可以持久化到硬盘。2、是类对象本身数据的写入到本地文件。我们需要实现两个方法: encodeWithCoder和initWithEncoder。encodeWithCoder就是编码,initWithCoder就是.原创 2021-11-03 21:08:22 · 868 阅读 · 0 评论 -
iOS-NSCopying 和 NSMutableCopying协议
一、NSCopying协议二、NSMutableCopying协议原创 2021-11-03 20:53:25 · 541 阅读 · 0 评论 -
iOS-深拷贝和浅拷贝
一、深拷贝(Deep Copy) 和浅拷贝(Shallow Copy)浅拷贝:指针拷贝,复制一个新的指针,只想同一块内存区域。实际内存并没有发生拷贝原创 2021-11-03 10:52:29 · 2550 阅读 · 0 评论 -
iOS-copy和strong属性@property标识符
我们知道@property (nonatomic, copy) NSString *cpStr;原创 2021-11-03 08:16:45 · 481 阅读 · 0 评论 -
iOS-strong,copy,weak,assign等修饰符作用
ARC 是苹果引入的一种自动内存管理机制,会根据引用计数自动监视对象的生存周期,实现方式是在编译时期自动在已有代码中插入合适的内存管理代码以及在 Runtime 做一些优化。原创 2021-11-02 21:05:29 · 1045 阅读 · 0 评论 -
iOS-将 .m文件编译成 .cpp文件
runtime 是 OC底层的一套C语言的API(引入 <objc/runtime.h> 或<objc/message.h>),编译器最终都会将OC代码转化为运行时代码,通过终端命令编译.m 文件:clang -rewrite-objc xxx.m可以看到编译后的xxx.cpp(C++文件)。比如我们创建了一个对象 [[NSObject alloc]init],最终被转换为几万行代码,截取最关键的一句可以看到底层是通过runtime创建的对象。...原创 2021-11-01 22:54:40 · 1203 阅读 · 0 评论 -
iOS- .h .m .mm .cpp文件
.h:头文件。头文件包含类,类型,函数和常数的声明。.m:源代码文件。这是典型的源代码文件扩展名,可以包含Objective-C和C代码。.mm:源代码文件。带有这种扩展名的源代码文件,除了可以包含Objective-C和C代码以外还可以包含C++代码。仅在你的Objective-C代码中确实需要使用C++类或者特性的时候才用这种扩展名.cpp:只能编译C++当你需要在源代码中包含头文件的时候,你可以使用标准的#include编译选项,但是Objective-C提供了更好的方法。#impor原创 2021-11-01 22:53:30 · 1144 阅读 · 0 评论 -
iOS-isa指针;objc实例对象、类、元类、根类、根元类
11原创 2021-10-07 10:53:07 · 1835 阅读 · 0 评论 -
iOS-class方法和objc_getClass方法
根据上一篇博客iOS-class、object_getClass、objc_getClass、objc_getMetaClass区别的研究发现,qi's原创 2021-10-07 10:12:25 · 2116 阅读 · 0 评论 -
iOS-class、object_getClass、objc_getClass、objc_getMetaClass区别
对于这几个方法的区别,首先需要了解 OC 类的数据结构,(任何runtime的文章都会介绍的)对于 class 和 object_getClass 和 objc_getClass 三种方法,首先:全部返回 Class 类对象class 方法class 方法无论是类对象还是实例对象都可以调用,可以嵌套,返回永远是自身的类对象。如:Person *p = [[Person alloc]init];Class *pClass == [p class] == [ [p class]class] .原创 2021-10-07 09:17:30 · 1294 阅读 · 0 评论 -
iOS-Runtime消息发送、转发机制
在iOS开发中我们经常会遇到这样的crashunrecognized selector sent to instance 0x******原创 2021-10-04 22:23:07 · 1114 阅读 · 0 评论 -
iOS-Runtime之SEL、IMP、Method
它们之间的关系可以这么解释:一个类(Class)持有一个分发表,在运行期分发消息,表中的每一个实体代表一个方法(Method),它的名字叫做选择子(SEL),对应着一种方法实现(IMP)。具体的分析如下:...原创 2021-10-04 21:14:40 · 1226 阅读 · 0 评论 -
iOS-Runtime之unrecognized selector sent to instance/class 防护Crash
可在GitHub上下载示例源代码Demo,欢迎点赞给星,谢谢!一、报错在iOS开发中我们经常会遇到这样的crashunrecognized selector sent to instance 0x******二、报错原因报错原因就是我们调用了一个不存在的方法。用OC的消息机制来说就是:消息的接收者找不到对应的selector,这样就启动了消息转发机制,我们可以通过代码在消息转发的过程中告诉对象应该如何处理未知的消息,防止程序crash。默认实现是抛出下面的异常,这样也就crash了.原创 2021-10-04 08:04:45 · 1308 阅读 · 0 评论 -
iOS-多线程:『GCD』详尽总结
本文首发于我的个人博客:『不羁阁』 文章链接:传送门 本文更新时间: 2019-09-14 15:35:48再次感谢大家对这篇文章的喜欢和支持。为了更好的让大家了解 iOS 多线程,以及 GCD 的相关知识,我第三次对这篇文章进行了梳理,修改了 GCD 不同组合方式区别的相关总结,以及 队列、任务以及线程之间关系的形象理解。本文用来介绍 iOS 多线程中 GCD 的相关知识以及使用方法。这大概是史上最详细、清晰的关于 GCD 的详细讲解 + 总结 的文章了。通过本文,您将了解到:1. GCD..转载 2021-10-02 23:09:11 · 403 阅读 · 0 评论 -
iOS-OC最实用的runtime总结
前言runtime的资料网上有很多了,部分有些晦涩难懂,我通过自己的学习方法总结一遍,主要讲一些常用的方法功能,以实用为主,我觉得用到印象才是最深刻的,并且最后两个demo也是MJExtension的实现原理,面试的时候也可以多扯点。另外runtime的知识还有很多,想要了解更多可以看我翻译的官方文档(有点枯燥),本文的demo下载地址什么是runtime?runtime 是 OC底层的一套C语言的API(引入 <objc/runtime.h> 或<objc/message.转载 2021-10-02 17:47:45 · 343 阅读 · 0 评论 -
iOS-Runtime 10种用法(没有比这更全的了)
阅读了多篇运行时的文章,感觉都很不错,从几篇文章里面提取一些个人认为比较重要的,偏实战的知识点的摘录,另外还结合了个人的创造形成此文。再牛逼的技术和实战结合才有意义,本篇介绍技术尽量和实战联系起来,有些没讲明白的,我给的链接里面都有,所以我就不赘述了,如果觉得可以就点个赞吧,哈哈。不需要打赏。1)替换系统方法,2)字典转model,3)归档,4)万能控制器跳转四个偏实战的方法从不同的文章中聚合到这里.没讲明白的麻烦看客去我给的链接里面看看,他们都讲了对文章的内容我用一张图介绍吧.转载 2021-10-02 17:45:59 · 950 阅读 · 0 评论 -
iOS-苹果官方开源网站;objc、Runloop、GCD、OC等开源代码
资料仅供参考:objc https://opensource.apple.com/tarballs/objc4/runloop https://opensource.apple.com/tarballs/CF/gcd https://github.com/apple/swift-corelibs-libdispatchGNU libc https://www.gnu.org/software/libc/ https://ftp.gnu.org/gnu/lib...原创 2021-09-11 22:32:58 · 4063 阅读 · 0 评论 -
iOS-Objective-C的本质
底层原理 - 对象的本质一、Objective-C的本质1、OC的本质OC代码的底层实现其实都是C/C++代码,编译器先把OC代码转换成C/C++代码,接着转成汇编语言,最后转成机器语言最终运行在手机上; 所以OC代码的本质其实就是c/c++代码;OC对象转换过程2、Objective-C的对象、类主要是基于C/C++的什么数据结构实现的?Objective-C的面向对象都是基于C/C++的数据结构实现的3、手动将Objective-C代码转换为C/C++代码打开终.转载 2021-09-11 22:32:07 · 341 阅读 · 0 评论 -
iOS-Appstore上App下架后用另一个新账号上架
分为两种情况1、一种情况是开发者主动下架app2、另一种情况是因为某些原因app被苹果官方下架。一、开发者主动下架app如果是第一种情况,Appstore 上的App下架后是可以用另一个新账号上架的。此时,其实无需下架或删除 app,直接将其所有权转让给其他开发者账号。在转让期间和转让后app 评论和评分均可保留。转让后,用户还可以继续进行更新。当然,转让 app 也是有条件的:此 app 拥有至少一个已获批的版本;此 app 处于“已经上架”、“准备提交”、 “被开发者拒绝”或原创 2021-11-12 08:48:08 · 5317 阅读 · 10 评论 -
iOS-事件响应链、单例模式、工厂模式、观察者模式
欢迎关注我的iOS学习总结——每天学一点iOS:https://github.com/practiceqian/one-day-one-iOS-summaryiOS中事件传递和相应机制 iOS中的事件(主要有三类) 触摸事件(touch Event) 运动/加速计事件(motion Event) 远程控制事件(remote-control Event) UIResponder(响应者对象) iOS中只有继承了UIResponder的类才能接收并处理事件,称之为响应者转载 2021-07-07 20:36:23 · 231 阅读 · 0 评论 -
iOS-NSTimer的3种创建方式
在iOS开发中,经常会用到定时器,iOS中常用的定时器有三种:NSTimer,CADisplayLink,GCD。一、NSTimer创建定时器 // 创建定时器 方式1 NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:_target selector:@selector(run) userInfo:nil repeats:YES];// 停止定时器[timer invalidate];// 创建定时器转载 2021-07-24 22:21:30 · 583 阅读 · 0 评论 -
iOS-The application‘s Info.plist does not contain CFBundleVersion.
今天升级了Xcode,运行模拟器报错如下:Failed to install the requested applicationThe application's Info.plist does not contain CFBundleVersion.Ensure your bundle contains a CFBundleVersion.本以为是升Xcode导致的,但是运行其他分支项目,模拟器是可以跑起来的,于是按照错误提示检查首先在General中Version是有值的再原创 2020-12-31 15:34:57 · 5296 阅读 · 0 评论 -
iOS-关于 iOS 10 中 ATS 的问题
本文于 2016 年 11 月 28 日按照 Apple 最新的文档和 Xcode 8 中的表现进行了部分更新。WWDC 15 提出的 ATS (App Transport Security) 是 Apple 在推进网络通讯安全的一个重要方式。在 iOS 9 和 OS X 10.11 中,默认情况下非 HTTPS 的网络访问是被禁止的。当然,因为这样的推进影响面非常广,作为缓冲,我们可以在 Info.plist 中添加NSAppTransportSecurity字典并且将NSAllowsA...转载 2020-12-10 17:31:59 · 1062 阅读 · 0 评论 -
iOS - iOS8.0 至 iOS15.0 版本变化
本文主要讲述iOS8.0系统至iOS14系统的变化差异,博主踩坑历程,仅为iOS开发提供参考,不包括UI一、iOS8.01.定位功能使用改变// 判断定位操作是否被允许if([CLLocationManager locationServicesEnabled]) { locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; [locationManager start......原创 2021-06-02 18:03:17 · 3287 阅读 · 3 评论 -
iOS-发布APP到AppStore
上传AppStore之前参考一下博主的打包流程Archive打包发布测试只是在这里选择导出ipa的时候不一样了,需要选择第一个,因为是要发布到AppStore上面去的打完包之后会出现在你保存的路径之下,这时需要做的主要流程如下:1、右键Xcode----Open Developer Tool----Application Loader工具2、点击选取----IPA包所...原创 2016-08-09 10:59:58 · 1215 阅读 · 0 评论 -
iOS-An Apple ID verification code is required to sign in. Type your password followed by the verific
登录App Store之后,输入了正确的AppleID和密码,但是依然报错如下:An Apple ID verification code is required to sign in. Type your password followed by the verification code shown on your other devices.解决办法:这时候,提示已经说明,“Type your password followed by the verification code”,请输入原创 2021-02-05 09:42:36 · 1959 阅读 · 0 评论 -
iOS-Socket都在这里了
本文授权转载,作者:吴白(简书)socket(套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,计算机操作系统为应用程序与TCP/...转载 2016-06-14 20:53:25 · 1262 阅读 · 0 评论 -
iOS-苹果开发者账号类型以及区别
一、苹果对开发者主要分为3类:个人、组织(公司、企业)、教育机构。即:1、个人(Individual)2、组织(Organizations)组织类又分为2个小类:(1)公司(Company)(2)企业(Enterprise)3、教育机构(Educational Institutions)苹果官方说明:点击打开链接二、四种账号的区别(Individual,...原创 2016-04-16 12:31:25 · 10388 阅读 · 2 评论 -
iOS-main.m文件
摘要:在ios开发中有一个文件main.m文件,本文我们主要分析这个主函数里面到底做了哪些工作和任务。转自:https://www.yunbook.vip/post/1543582623232.html一、main.m的代码如下:#import <UIKit/UIKit.h>#import "AppDelegate.h"int main(int argc, char * argv[]) { NSString * appDelegateClassName; @aut转载 2021-05-02 12:29:07 · 673 阅读 · 1 评论 -
iOS-iOS12 无法加载HTTP
解决问题当无法加载http图片或者链接的时候,百度到一波需要如下的设置:<key>NSAppTransportSecurity</key><dict> <key>NSAllowsArbitraryLoadsInWebContent</key> <true/> <key>NSAllowsArbitraryLoads</key> <true/></dic转载 2020-12-10 17:13:01 · 1030 阅读 · 0 评论 -
iOS一行代码进行RSA、DES 、AES、MD5加密、解密
本文为投稿文章,作者:Flying_Einstein(简书)加密的Demo,欢迎下载JAVA端的加密解密,读者可以看我同事的这篇文章:http://www.jianshu.com/p/98569e81cc0b最近做了一个移动项目,是有服务器和客户端类型的项目,客户端是要登录才行的,服务器也会返回数据,服务器是用Java开发的,客户端要同时支持多平台(Android、iOS),在处理iO转载 2016-06-01 10:59:40 · 1955 阅读 · 0 评论 -
iOS-CocoaPods原理
CocoaPods是IOS项目上负责管理依赖的工具,即对第三方库的依赖。CocoaPods 的原理是将所有的依赖库都放到另一个名为Pods的项目中, 然而让主项目依赖Pods项目,这样,源码管理工作任务从主项目移到了Pods项目中. 1.Pods项目最终会编译成一个名为libPods.a的文件, 主项目只要依赖这个.a文件即可. 2.对于资源文件, CocoaPods提供了一个名为Pods-resources.sh的bash脚步, 该脚本在每次项目 编译的时候都会执行,将第三方库的各种.转载 2021-06-02 15:43:54 · 1008 阅读 · 0 评论 -
iOS-单例模式
一、简介单例模式使一个类只有一个实例.单例是在使用过程,保证全局有唯一的一个实例单例模式(Singleton)的目的是为了保证在一个进程中,某个类有且仅有一个实例二、创建单例三、销毁单例...原创 2021-06-07 22:19:06 · 394 阅读 · 2 评论 -
iOS-使用Xcode的Targets进行多版本构建
通常,我们在开发过程中,总是需要两套以上的环境进行测试、生产发布。如果只是简简单单的进行一个API的切换,那么只是进行不同的宏定义即可,但是要求应用的不同版本将使用相同的基础代码,但可以有不同的图标、切图等资源文件,bundle ID 和指向不同的数据库,这时就需要进行多版本构建管理。虽然这种方法也许快捷,方便,但是它有一些重要的限制。首先,因为我们在不同的环境中使用一个Bundle ID,你不能...原创 2016-08-17 11:12:05 · 1364 阅读 · 0 评论 -
iOS-设置Main Interface通过storyboard或者xib加载主界面
当我们启动APP的单个视图应用程序,不是以编程方式从AppDelelgate分配rootViewController时,而是使用“Main Interface”主界面选项将storyboard或者xib指定为我的主界面文件关键是初始化窗口并从storyboard或者xib本身设置UIApplication及其委托>步骤1:创建一个带有UIWindow对象的storyboard或者xib文件作为UIApplication的xib的所有者>步骤2:在xib中创建一个AppDe原创 2021-05-02 12:25:23 · 1312 阅读 · 0 评论 -
iOS-Runtime之class_addMethod给类动态添加方法
一、简介/** * Adds a new method to a class with a given name and implementation. * * @param cls The class to which to add a method. * @param name A selector that specifies the name of the method being added. * @param imp A function which is the imple原创 2021-10-05 22:18:13 · 1605 阅读 · 0 评论 -
iOS-Building for iOS Simulator, but the linked and embedded framework ‘XX.framework‘ was built for
运行一个以前的项目报错如下:/Users/XX/Desktop/XX.xcodeproj Building for iOS Simulator, but the linked and embedded framework 'XX.framework' was built for iOS.原创 2021-06-06 16:17:19 · 2544 阅读 · 2 评论 -
iOS-架构模式--解密 MVC,MVP,MVVM以及VIPER架构
本文来自CocoaChina翻译活动,作者 suiling 本文由CocoaChina译者lynulzy(社区ID)翻译 作者:Bohdan Orlov 原文:iOS Architecture Patterns 在 iOS 中使用 MVC 架构感觉很奇怪? 迁移到MVVM架构又怀有疑虑?听说过 VIPER 又不确定是否真的值得切换?相信你会找到以上问题的答案,如果没找到请在评论中指出。你将要整理出你在 iOS 环境下所有关于架构模式的知识。我们将带领大家简要的回..转载 2021-07-04 22:00:51 · 567 阅读 · 0 评论