ICode9

精准搜索请尝试: 精确搜索
  • iOS 通过反射的方式调用目标函数2021-01-18 13:02:59

    1. 目标 工作中,需要解决这样一种问题,测试每一个目标接口的调用时间和返回值。逻辑较为通用,所以想使用反射来实现这种功能。 2. 背景知识 网上查了下,发现反射有两种实现方式,分别为 runtime中的objc_msgSend 和 NSInvocation。 2.1 objc_msgSend 具体可参考这篇文章:https://www.jia

  • OC之runtime(super)2020-12-28 21:35:06

    对于下面的代码,打印的结果是啥 #import "LBStudent.h" @implementation LBStudent - (instancetype)init { self = [super init]; if (self) { NSLog(@"[self class] = %@", [self class]); NSLog(@"[super class] = %@", [super

  • IOS-自动释放池2020-12-03 19:34:44

    AutoreleasePool 自动释放池(NSAutoreleasePool):An object that supports Cocoa’s reference-counted memory management system. 使用示例: 在MRC环境下 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // Code benefitting from a local autorelease poo

  • Mac上python多线程错误:...+[__NSPlaceholderDate initialize]...2020-11-25 18:03:14

    错误提示并且报pycharm异常退出 objc[27880]: +[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called. objc[27880]: +[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called

  • 01-04 分类关联对象2020-11-23 22:04:47

    1、分类中添加关联属性 类中声明属性 @property(nonatomic,assign) int age; 相当于 @interface People : NSObject { int _age; } - (void)setAge:(int)age; - (int)age; @end - (void)setAge:(int )age { _age = age; } - (int)age{ return _age; } 即:@property

  • iOS-weak修饰的对象被释放时,weak指针自动被置为nil的实现原理2020-08-31 09:33:22

    iOS-weak修饰的对象被释放时,weak指针自动被置为nil的实现原理   我们都知道weak指针不会增加引用计数,并在引用对象被回收的时候自动被置为nil。通常用于解决循环引用问题。那么,自动被置为nil内部又是如何实现的呢? 一、weak的实现原理 概括 Runtime维护了一个weak表,用于存储指

  • C++ 移动开发跨平台解决方案2020-06-23 17:39:49

    目录 1 Swig方案... 2 1.1 下载安装... 2 1.2 使用... 3 2 Djinni方案... 5 2.1 下载和安装... 5 2.2 使用... 6                                            针对功能复杂的app开发,比较流行的方案一般是用c++开发跨平台的底层SDK供UI层调用。实现一套代

  • 【iOS面试粮食】Runtime—消息传递和转发机制、Method Swizzling2020-05-16 16:07:21

    本文章将记录Objective-C中消息传递和转发机制、Method Swizzling的相关资料,如有错误欢迎指出~ Objective-C 本质上是一种基于 C 语言的领域特定语言。C 语言是一门静态语言,其在编译时决定调用哪个函数。而 Objective-C 则是一门动态语言,其在编译时不能决定最终执行时调用哪个函数

  • 从github或者其他地方下载的Flutter源码中没有Android Ios目录解决方案2020-04-18 23:03:59

    在所在目录运行如下命令[ 注意有个点 ]   flutter create -i objc . 参数解释: -i 是表示iOS项目开发语言,objc和swift两个选项,其中objc是默认的。 -a 是表示Android项目开发语言,java和kotlin两个选项,其中java是默认的。 当然了create命令还给我们提供了一些其他选项: -t , --

  • objective-c c++ 混编2020-03-12 21:44:31

    xcode可以进行c++、objective-c混合开发,mm、m后缀为objective-c代码,可以在其中调用cpp后缀的c++类,反过来不行,除非把compile sources as设置为objective-c++才行。怎样可以做到不改compile sources as可以反向调用?下面介绍的一种方法。 // objc // 头文件 @interface Test : NS

  • Fast Enumeration2020-03-08 23:54:31

    在 Objective-C 2.0 中提供了快速枚举的语法,它是我们遍历集合元素的首选方法。它具有以下优点: 比直接使用 NSEnumerator 更高效; 语法非常简洁; 如果集合在遍历的过程中被修改,它会抛出异常; 可以同时执行多个枚举。 一、解析 NSFastEnumeration 协议 在 Objective-C 中,我们要想实现

  • iOS 读懂runtime基础(一)2020-03-06 11:09:09

    目录前言runtime是什么三个重要概念一 各主要对象数据结构1 objc_object2 objc_class2.1 cache_t2.2 class_data_bits_t3 isa4 method_t4.1 函数的四要素4.2 types5 一张图表明各数据结构之间的关系二 实例对象、类对象和元类对象1 实例方法调用时是如何查找的2 self和super

  • objc_msgSend和objc_msgSendSuper的使用2020-02-19 21:01:09

    objc_msgSend:用于对objc对象发送消息,执行objc的方法。 objc_msgSendSuper:同上一样,这里是调用objc父类对象的方法。 使用以上函数之前需要对它们做函数转换后,方可使用,以下是这些函数的注释 These functions must be cast to an appropriate function pointer type before being ca

  • "_OBJC_CLASS_$_文件名", referenced from: objc-class-ref in文件名2020-02-06 19:43:05

    当往工程中添加文件时:注意   1.确保该.m文件在其中 2.勾选该文件对应的target   二: 尝试 关闭 或者  修改路径名()Desktop/t/lite/Article  点赞 收藏 分享 文章举报 TheShyclear 发布了85 篇原创文章 · 获赞 18 · 访问量 3万+ 私信

  • 如何正确的hook方法objc_msgSend · jmpews2020-01-29 10:57:21

    如何正确的hook方法objc_msgSend前言如果希望对 Objective-C 的方法调用进行 log, 一个很好的解决方法就是 hook 方法 objc_msgSend, 当然想到的就是利用 InlinkHook 直接 hook 完事, 然而 objc_msgSend 是一个可变参数函数, 这就有点蛋疼了. objc4-680, 和目前的 objc4-709 没有

  • OC-基于Runtime运用分类中增加属性2020-01-16 21:07:01

    题记:在项目不紧张的闲暇时间研究研究提升自己的技术认知. 怎样实现分类增加属性? 在h文件中增加一个 page属性 @property (nonatomic, assign) NSInteger page; 在.m文件中  对于一个属性而言其实就是实现了get和set方法,那么就应该从 get set方法入手,运用runtime机制动态添

  • iOS Runtime面试题(一个objc对象的isa的指针指向什么?有什么作用?)2019-11-29 19:01:11

    一个objc对象的isa的指针指向什么?有什么作用? 指向他的类对象,从而可以找到对象上的方法 详解:下图很好的描述了对象,类,元类之间的关系: 图中实线是 super_class指针,虚线是isa指针。 1.Root class (class)其实就是NSObject,NSObject是没有超类的,所以Root class(class)的superclass指向n

  • 使用Runtime的objc_msgSend实现模型和字典的互转2019-10-11 18:52:19

    一、介绍 模型转字典,字典转模型,这是开发中最基本的功能。系统类中提供了一个setValuesForKeysWithDictionary方法来实现字典转模型,至于模型转字典,这个就需要使用runtime来实现了。其实字典和模型的互转可以完全使用运行时runtime来实现。典型的第三方有MJExtension和YYModel。现在

  • 从OC到Swift(5)- 动态性,KVC\KVO2019-09-18 14:39:50

    dynamic 被@objc dynamic 修饰的内容会具有动态性,比如调用方法会走runtime那一套流程 class Dog: NSObject { @objc dynamic func test1() {} func test2() {} } var d = Dog() d.test1() d.test2() 对应汇编 KVC\KVO Swift支持KVC\KVO的条件 属性所在的

  • iOS 分类 category(一)2019-09-05 16:00:24

    Category是Objective-C 2.0之后添加的语言特性,分类、类别其实都是指的Category。Category的主要作用是为已经存在的类添加方法。 Objective-C 中的 Category 就是对装饰模式的一种具体实现。它的主要作用是在不改变原有类的前提下,动态地给这个类添加一些方法。 分类优点 声

  • runtime 理解笔记2019-08-06 16:00:09

    runtime 简称运行时,是系统运行的一种机制,在oc中通过c语言编写一个运行系统库。 对runtime要深入理解,首先需要理解 isa,  objc_object, objc_class   对象与类的关系 objc.h :  objc_object /// Represents an instance of a class.struct objc_object { Class _Nonnull isa

  • 新类和Block2019-08-01 14:54:10

    #ifndef _REWRITER_typedef_TestA#define _REWRITER_typedef_TestAtypedef struct objc_object TestA;typedef struct {} _objc_exc_TestA;#endifstruct TestA_IMPL { struct NSObject_IMPL NSObject_IVARS;};/* @end */// @implementation TestAstruct __TestA__funcitonB

  • Swift 协议protocol2019-07-09 20:04:00

    /*  定义协议时候,协议后面最好跟上class  delegate的属性最好用weak,用于防止循环引用  */ protocol BuyTicketDelegate : class{     func buyTicket() }   class Person22{     weak var delegate:BuyTicketDelegate?          func gotoBeiJing() {         de

  • 强制旋转一个UIViewController2019-06-30 14:23:35

    刚才V2ex上问了这么一个问题: http://www.v2ex.com/t/97577#reply7 然后就随手搜了下 stackoverflow 在iOS5的年代是有这么个API: 1 [[UIDevice currentDevice] setOrientation: UIInterfaceOrientationPortrait]; 但是在iOS 6开始,苹果把这个API 私有了。 于是乎,可以

  • Runtime-iOS运行时基础篇2019-06-26 21:54:48

    转自:https://www.jianshu.com/p/d4b55dae9a0d   本文主要整理了Runtime的相关知识。对于一个iOS开发者来说,掌握Runtime的重要性早已不言而喻。OC能够作为一门优秀的动态特性语言,在其背后默默工作着的就是Runtime。在网上也看过很多资料,最终我还是希望在一些关键的知识点上能够

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有