AFNetwork3.0 学习笔记

常用代码片段

GCD:仅执行一次

static dispatch_once_t oncePredicate;
dispatch_once(&oncePredicate, ^{
    _sharedManager = [[self alloc] init];
});

常量的声明

// .h中声明
/** Posted when a task resumes. */
FOUNDATION_EXPORT NSString * const AFNetworkingTaskDidResumeNotification;

// .m中赋值
NSString * const AFNetworkingTaskDidResumeNotification = @"com.alamofire.networking.task.resume";

static NSString * const AFURLSessionManagerLockName = @"com.alamofire.networking.session.manager.lock";

static NSTimeInterval const kDefaultAFNetworkActivityManagerActivationDelay = 1.0;

向RunLoop中添加Timer

//  添加
_activationDelayTimer = [NSTimer timerWithTimeInterval:self.activationDelay target:self selector:@selector(activationDelayTimerFired) userInfo:nil repeats:NO];  //Q:为什么此处的repeats为NO呢?
[[NSRunLoop mainRunLoop] addTimer:_activationDelayTimer forMode:NSRunLoopCommonModes];

//  移除
[_activationDelayTimer invalidate];

注:让需要将Timer从RunLoop中移除时,直接调用-invalidate方法就好了~
(该方法的说明为“Stops the receiver from ever firing again and requests its removal from its run loop.”)

-setNeedsLayout; 与-layoutIfNeeded; 的区别

- (void)setNeedsLayout; :无效当前的布局,并在下一个视图更新周期期间触发布局更新。由于这种方法不强制立即更新布局,而是等待下一个更新周期,在许多视图更新布局之前你可以使用它将这些布局无效化。这种行为可以让你将所有布局的更新整合到一个更新周期,这通常是更好的性能。

- (void)layoutIfNeeded;:立刻布局子视图。使用此方法在布局绘制前来强制布局子视图。


未完待续...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容