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;:立刻布局子视图。使用此方法在布局绘制前来强制布局子视图。


未完待续...

你可能感兴趣的:(AFNetwork3.0 学习笔记)