首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何知道我的非ViewController类是否已加载(如viewDidLoad)

在iOS开发中,非ViewController类的加载状态可以通过以下方式进行判断:

  1. 使用静态变量:可以在非ViewController类中定义一个静态变量,用于标记该类是否已加载。在类的初始化方法中将该变量设置为true,表示已加载。其他地方可以通过访问该静态变量来判断类的加载状态。
  2. 使用通知机制:可以在非ViewController类的初始化方法中发送一个自定义通知,表示该类已加载。其他地方可以通过监听该通知来判断类的加载状态。
  3. 使用单例模式:可以将非ViewController类设计为单例类,在单例类的初始化方法中进行加载状态的标记。其他地方可以通过访问单例对象来判断类的加载状态。
  4. 使用方法交换:可以通过方法交换的方式,在非ViewController类的初始化方法中替换原始的加载方法,并在替换的方法中添加加载状态的标记。其他地方可以通过调用原始的加载方法来判断类的加载状态。

需要注意的是,以上方法仅适用于非ViewController类的加载状态判断,对于ViewController类,可以直接使用生命周期方法如viewDidLoad来判断是否已加载。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS App 启动性能优化

App启动过程 解析Info.plist 加载相关信息,例如闪屏 沙箱建立、权限检查 Mach-O加载 如果是胖二进制文件,寻找合适当前CPU类别的部分 加载所有依赖Mach-O文件(递归调用Mach-O...-[MQQTab1ViewController viewDidLoad]、 -[MQQTab2ViewController viewDidLoad]、 -[MQQTab2ViewController...:didFinishLaunchingWithOptions:] -[MQQTab2ViewController viewDidLoad] (点击了第二个tab之后加载) -[MQQTab3ViewController...为了解决这个历史问题,在这个过程中试过多种方法来扫描没有用到,其中有一种是编译后对ObjC指针引用进行反向扫描,可惜实际上收获不是很明显,而且还要写很多例外代码来处理一些特殊情况。...有时候对于一些暂时不再使用代码,也很纠结于要不要svn rm,因为从代码历史中找删除掉文件还是不太方便。不知道大家有没有相关经验可以分享,也请不吝赐教。 3.

2.2K92

Runtime再理解

也就是说,有很多和成员变量以及方法实现等,在编译时候是不知道,而在运行时候,我们所编写代码才会转换成完整、确定代码。...2,实例方法存在于methodList中,方法存在于元methodList中。 实例对象是实例,对象是元实例。...]; /* *注意,这个方法实际上是跳转页面(即x手动新建)viewDidLoad方法替换 *这里self是跳转页面的实例。...并不是说在ViewControllerself就是ViewController或者其实例, *该消息给谁发送,也就是说,该消息接收者是谁,那么self就是谁 */ [self...]; /* *注意,这个方法实际上是跳转页面(即x手动新建)viewDidLoad方法替换 *这里self是跳转页面的实例。

61120

Objective-c 知识总结 -- @property

nonatomic 原子性操作,线程不安全 —— atomic 原子性操作,线程安全【默认值】 类属性 class 永远不自动合成存取方法,需手动实现;不声明实例变量,因为它是变量;【iOS 10,...属性访问方式 访问方式有: 通过直接使用实例变量 使用编译器提供点运算符,实现属性存取方法调用,从而间接使用实例变量; 注意:id 类型变量不能使用点操作符进行访问,原因是 Xcode 不知道是否存在对应存取方法...; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any..._age); } @end 那个警告明显是说,自动合成实例变量是__age,而不是 _age,所以你应该定义一个 __age 实例变量才对,不然就警告你; 其实这里是间接地证明了,如果你自己定义了相应带下划线实例变量...只要知道对象支持某个方法名称,即使该对象所在接口中没有该方法声明,你也可以调用该方法。

1.3K31

iOS对UIViewController生命周期和属性方法解析

从归档初始化 - (instancetype)initWithCoder:(NSCoder *)coder; //加载视图 -(void)loadView; //将要加载视图 - (void)viewDidLoad...这是一个ViewController完整声明周期,其实里面还有好多地方需要我们注意一下: 1:initialize函数并不会每次创建对象都调用,只有在这个第一次创建对象时才会调用,做一些准备工作...4:viewDidLoad方法是我们最常用方法中成员对象和变量初始化我们都会放在这个方法中,在创建后,无论视图展现或消失,这个方法也是只会在将要布局时调用一次。...三、从storyBoard加载UIViewController实例传值陷阱         我们知道,当我们从StoryBoard中加载ViewController时,我们在Controller中拖拽视图是可以被初始化...在iOS9中,UIViewController还增加了下面一个布尔值属性,可以同来判断controllerview是否已经加载完成: @property(nullable, nonatomic, readonly

2.9K20

ARKit 配置-在您AR项目的幕后

在本节中,我们将看看如何在后面配置提供ARKit模板。我们将发现什么是世界跟踪和AR会话。同样,我们将学习如何将一些调试选项应用于场景中指导。...查看控制器 在导入下方,ViewController已被声明为UIViewController一部分,并且与故事板中视图相关。具有属性,方法和协议,所有这些都在开发中被利用。...viewDidLoad是视图加载时候,viewWillAppear在视图加载之前是正确,而viewWillDisappear在视图消失之前是正确。...你能告诉另一个用于ARKit流行技术例子吗?让给你一个提示:Animoji。这是正确,它是面部跟踪,如果你第一次购买iPhoneX,你可能会有很多乐趣。...因此,如果您有一个统一白色或黑色表,您将看不到太多或任何特征点。这应该可以指示平面是否适合放置模型。所以,建议你添加垫子或其他东西。 ?

2.5K20

AVFoundation框架理论+实战一(文本语音转换)

:    这是语音播放关键API,相当于一个发声器,他可以播放一条一条AVSpeechUtterance对象。...AVSpeechUtterance:    这个主要是一条一条话语,这些话语对象可以填充文本,语言,语速,音高等等, AVSpeechSynthesisVoice:    语言设置,中文,英文等等...具体API点进中去看。...,@"王胖子叔叔,",@"我爸爸是王瘸子,他让来帝京找你当 学徒",@"/n"],@[@"咋!不认识了?",@"是王小二呀,咱们都不是王八屯吗。",@"王胖子也是你叫吗?"...,@"知道你是个小混混,要不是你爸求我,才不管你呢,",@"谢谢王叔收为徒。",@"谢没有用,收不收你要老板娘同意才行。",@"老板?"

1.3K30

Swift 项目 - Xib | StoryBoard 多人协作技巧

答案是否,很早版本,苹果就给出了上图中解决方案。...中viewDidLoad方法中,self.parent 是nil,这时不能拿到主ViewController实例。...这个问题其实问很模糊,也是咨询了很多人才知道,他们所谓问题不容易测试,是指如下两种情况: 修改或删除 @IBOutlet 变量名时,对应Storyboard上未做处理,导致运行时崩溃,崩溃内容看不懂...其实只要知道,苹果是如何把Storyboardxml解析成视图,崩溃错误内容也就容易看懂了 之前提到过,视图构造使用是下面这个方法 required init?...简直不敢相信自己眼睛,而且差距这么大一定是有什么神奇事情发生,为了验证想法,又将Storyboard创建复制了一次 var controllers:[ViewController

2K20

iOS性能优化之启动优化

所以在运行时,dyld加载共享缓存,加载链接动态库之后,进行binding操作,重新绑定外部符号 ObjC setup time:注册OC耗时 注册OC过程,读取二进制data段找到OC相关信息...应用启动时,系统会生成和分类两张表,OC和分类注册,会插入到这两张表中,所以会造成一定时间消耗 这部分时间很难优化,除非减少项目中和分类定义 减少和所属分类load方法使用,让以懒加载方式加载...,仅在虚拟内存中,没有被物理内存缓存 缓存内存页,同时存在于虚拟内存和物理内存中 使用虚拟内存优势: 程序以懒加载方式加载到内存中,按需加载,避免内存浪费 将程序和物理内存完全阻隔开,无法跨进程访问...通过LinkMap文件中顺序,查看最终排序是否符合预期 在工程根目录创建.order文件 打开hk.order文件,写入启动时需要方法/函数 +[ViewController load] +...但真正难点是,如何能找到项目中启动时需要调用所有方法和函数 5. Clang插庄 在项目中,对于OC方法,可以对objc_msgSend方法进行HOOK。

1.7K11

UIKit Dynamics:开始入门 —《Graphics & Animation系列一》

增加重力效果 仍然在 ViewController.swift中,在viewDidLoad上方添加以下属性: var animtor: UIDynamicAnimator!...由于障碍视图是不可移动,所以动力学引擎不需要知道存在。 但是如何检测到碰撞?...仍然在ViewController.swift中,通过更新声明来采用UICollisionBehaviorDelegate协议: class ViewController: UIViewController...到目前为止,UIKit Dynamics已经根据物品界限自动设置物品物理属性(质量和弹性)。 接下来,将看到如何使用UIDynamicItemBehavior自己控制这些物理属性。...首先,它检查是否存在现有的快照行为并将其删除。 然后创建一个新捕捉行为,将方块对齐到用户触摸位置,并将其添加到动画制作工具中。 构建并运行应用程序。

1.8K30

ViewController及View生命周期1. 起因2. Controller生命周期3. View生命周期4. 内存警告

这让永远都只在viewDidLoad写作童鞋们情何以堪吶。 这些其实都和生命周期有关,和viewController以及view各种加载顺序有关。这篇文章就小小撸一下这中间关系和顺序。 2....下面做一个小测试,打印在不同方法执行过程中,界面的长宽属性如何,结果如下: //viewDidLoad w:320.000000 h:568.000000 //viewWillAppear w:...ViewDidLoad:view加载完毕 当控制器loadView方法执行完毕,view被创建成功后,就会执行viewDidLoad方法。...View生命周期 我们知道view创建有init(或new或者跟名一样)方法,销毁时会自动执行dealloc方法,但是UIView生命周期到底是怎样呢?...更严谨一点,还需要判断view是否已经加载。如果没有加载,就不需要干掉了。 实际开发中为了写少点,都会写在基控制器中。 官方说,iOS 6.0以后系统就不会自动清理,需要手动清理。

1.3K30

iOS 中block结构简单用法 原

自从block出现之后,很多API都开始采用这样结构,由此可见,block确实有许多优势存在,这里将一些简单用法总结如下: 一、如何声明一个block变量 我们通过^符号来声明block类型,形式如下...: void (^myBlock)(); 其中第一个void是返回值,可以是任意类型,中间括号中^后面的是这个block变量名字,把它命名为myBlock,最后一个括号中是参数,如果多参数,可以写成如下样式...int (^myBlock)(int a,int b) ; -(void)func:(myBlock)block ; 二、如何实现一个block 既然block可以被声明为变量,那么就一定可以实现它,就像其他类型变量赋值...自己对block理解为它是一断代码块,所以给它赋值赋便是一段代码段: typedef int (^myBlock)(int,int) ; @interface ViewController () {...而添加__block对象不会被retain; 注意:如果我们访问成员变量,或者通过方法来访问对象,那么这些对象不会被retain,而对象会被return,最常见时self: typedef

56330

UI篇-VC生命周期以及UIViewlayoutSubviews和drawRect方法

前言 看似常用UIView,其实有很多不经常用到方法和应该注意机制,是一个喜欢打破砂锅问到底的人,可是很多问题在网上搜索不到答案,大部分博客都是转载相同东西,所以我自己就新建 Dome,实际测试了一些数据...) loadView:#加载view 会多次调用并且会使viewWillLayoutSubviews、viewDidLayoutSubviews不再执行 viewDidLoad:view加载完毕 viewWillAppear...跳转 当我们点击push时候首先会加载下一个界面然后才会调用界面的消失方法 initWithCoder:(NSCoder *)aDecoder:ViewController2 (如果用xib创建情况下...) loadView:ViewController2 viewDidLoadViewController2 viewWillDisappear:ViewController1 将要消失 viewWillAppear...VC是否是被出栈了。

1.8K30

iOS项目——基本框架搭建

,可以是一般ViewController,也可以是UINavigationController barItem对应ViewController或UINavigationControllerframe...load方法:加载时候调用,在什么时候加载呢?...程序一起动就调用load方法 Initialize方法:初始化,当第一次使用这个或者子类时候调用 viewdidload方法:当viewcontroller第一次即将显示时候加载。...viewController都是懒加载,即都是在即将显示出来时才加载viewdidLoad,但是只有 tabbarcontroller是在一创建控制器时候就进行加载viewdidLoad。...具体如何创建和配置PCH文件详情可以参见:ios中pch文件创建与配置   下面是在编写PCH文件需要注意一些情况: #ifndef PrefixHeader_pch #define PrefixHeader_pch

1.7K80
领券