240 发简信
IP属地:四川
  • @tom555cat 个人觉得这个问题与Non Fragile ivars无关
    在Objective-C提供的runtime函数中,确实有一个class_addIvar()函数用于给类添加成员变量,但是文档中特别说明:

    This function may only be called after objc_allocateClassPair and before objc_registerClassPair. Adding an instance variable to an existing class is not supported.

    意思是说,这个函数只能在“构建一个类的过程中”调用。一旦完成类定义,就不能再添加成员变量了。经过编译的类在程序启动后就被runtime加载,没有机会调用addIvar。程序在运行时动态构建的类需要在调用objc_registerClassPair之后才可以被使用,同样没有机会再添加成员变量。

    当别人问Category为什么不能添加属性

    学习写简书博客,每次写简书都是对过往的回顾 前言 这段时间换工作,发现面试经常会问到一个问题:分类中能不能定义实例变量,为什么?答案:不能。类的内存布局在编译时期就已经确定了...

  • 转自网络-文章保存用于自看的。

    一、前瞻性的眼光 合格的架构师一定需要有前瞻性的眼光。 架构不是演化出来的,摸着石头过河,遇到问题解决问题,那是专家的优势和特长,架构师不应该关注如何精妙的去解决问题,而应该...

  • Podfile.lock 冲突问题

    由于公司为多人开发,因此使用了Source tree来作为代码提交管理控制器,提交时选择忽略pod文件,具体忽略方式可参考点击打开链接,注意该博客里设置的针对source t...

  • 120
    项目组件化时用的包管理技术。

    要解除循环依赖,引入包管理技术cocoapods会让我们更有效率。pod不允许组件间有循环依赖,若有pod install时就会报错。 cocoapods,提供私有pod r...

  • 前言里面就有写。类的内存布局在编译时期就已经确定了,category是运行时才加载的早已经确定了内存布局所以无法添加实例变量,如果添加实例变量就会破坏category的内部布局。:smirk:

    当别人问Category为什么不能添加属性

    学习写简书博客,每次写简书都是对过往的回顾 前言 这段时间换工作,发现面试经常会问到一个问题:分类中能不能定义实例变量,为什么?答案:不能。类的内存布局在编译时期就已经确定了...

  • 120
    互斥锁和自旋锁

    学习写简书博客,每次写简书都是对过往的回顾 老生常谈 无并发,不编程.提到多线程就很难绕开锁. iOS开发中较常见的两类锁: 互斥锁: 同一时刻只能有一个线程获得互斥锁,其余...

  • mac升级后pod失效

    mac系统升级,今天项目pod突然不能使用了,提示“ bash:/usr/local/bin/pod:/System/Library/Frameworks/Ruby.fram...

  • 后台刷新了解一下

    当编写在后台执行的 iOS 代码时: 确定要使用哪个后台刷新 API。对于需要很多秒才能完成的网络请求,NSURLSession 会很有帮助。使用 iOS 提供的机会性后台抓...

  • 120
    iOS 多一种验证码输入实现

    现在很多App采用了类似下划线、方块等方式的验证码输入,直观美观!对于这种效果的实现方式,大概有以下几种方式: 1.多个UITextField组成 这种方式好处是有光标闪烁、...

  • iOS 获取电池电量

    由于项目需要,要求获取iOS手机电池电量的详细值以及变化量等信息。所以做了相关的技术调研,实现的方法有很多。所以写了这篇总结,对于当前获取电池电量的方式进行一个整理。 方法一...

  • iphone x 适配

    刚发布的三款新iPhone包括两款OLED屏幕的iPhone XS和iPhone XS Max,屏幕尺寸分别为5.8英寸(分辨率为1125 x 2436)和6.5英寸(分辨率...

  • 隐藏导航栏的三种方式

    在项目中经常碰到首页顶部是无限轮播,需要靠最上面显示.有的设置导航栏为透明等一系列的方法或者干脆简单粗暴的直接隐藏掉导航栏. 可一般情况下当push到下一个页面的时候又需要...

  • 探讨weakSelf、strongSelf、@weakify、@strongify为什么这么写

    先看看__strong 生成对象的时候用alloc/new/copy/mutableCopy等方法。 当我们声明了一个__strong对象 Clang会把上述代码转换成这个样...

  • 由"arc什么时候起作用?"问题发散一下

    之前遇到有人问我:“arc什么时候起作用?”。我的认为是在使用alloc,init,copy,mutableCopy,new这几个家族的方法后,arc已经起作用 ARC的约定...

  • 怎么让app启动更快?

    app启动 先来看app启动流程 APP的启动可以分为2种 1、冷启动(Cold Launch):从零开始启动APP 2、热启动(Warm Launch):APP已经在内存中...