小编Lor*_*o B的帖子

iOS - AppDelegate作为实例变量?

可以将AppDelegate作为实例变量UIViewController吗?喜欢@property (nonatomic, weak) AppDelegate *appDelegate;

为什么我问的是因为我需要经常访问它而不是这样做:

AppDelegate *appDelegate = (AppDelegate *) [[UIApplication sharedApplication] delegate]; 

[appDelegate doSomething]; 
Run Code Online (Sandbox Code Playgroud)

我可以:

[appDelegate doSomething]

objective-c uiapplicationdelegate ios

10
推荐指数
2
解决办法
1万
查看次数

AFNetworking - 为什么它会产生一个网络请求线程?

我试图更好地理解操作和线程,并查看AFNetworking的AFURLConnectionOperation子类,例如,真实世界的源代码.

我目前的理解是当实例NSOperation被添加到操作队列时,队列等管理负责执行操作的线程.在苹果公司的文档,NSOperation它指出,即使子类返回YES-isConcurrent操作将始终在一个单独的线程来启动(为10.6).

基于Apple在线程编程指南并发编程指南中强大的语言,管理线程似乎最好留给内部实现NSOperationQueue.

但是,AFNetworking的AFURLConnectionOperation子类产生了一个新的NSThread,并且操作-main方法的执行被推送到此网络请求线程.为什么?为什么这个网络请求线程是必要的?这是一种防御性编程技术,因为该库旨在供广大受众使用吗?调试库的消费者是不是更麻烦?在专用线程上进行所有网络活动是否有(微妙的)性能优势?

(
1月26日添加)在Dave Dribin 的博客文章中,他演示了如何使用NSURLConnection的具体示例将操作移回主线程.

我的好奇心来自Apple的线程编程指南中的以下部分:

保持你的线程合理繁忙.
如果您决定手动创建和管理线程,请记住线程占用宝贵的系统资源.您应该尽力确保为线程分配的任何任务都是合理的长寿和高效的.与此同时,您不应该害怕终止花费大部分时间闲置的线程.线程使用大量内存,其中一些是有线的,因此释放空闲线程不仅有助于减少应用程序的内存占用,还可以释放更多物理内存供其他系统进程使用.

在我看来,AFNetworking的网络请求线程没有"保持相当忙碌"; 它正在运行一个无限的while循环来处理网络I/O. 但是,请注意,这就是问题的关键 - 我不知道,我只是在猜测.

AFURLConnectionOperation对操作,线程(运行循环?)和/或GCD的具体问题的任何洞察或解构都将非常有利于填补我理解的空白.

objective-c nsoperation nsthread nsoperationqueue afnetworking

10
推荐指数
1
解决办法
1447
查看次数

NSOperation,start vs main

根据Apple关于NSOperation的文档,我们必须覆盖main非并发操作的start方法和并发操作的方法.但为什么?

nsoperation nsoperationqueue

10
推荐指数
2
解决办法
2516
查看次数

iOS编程:关于Root View Controller的说明

通过这个问题,我想知道我是否理解Root View Controller的概念.

在iOS应用程序中,根视图控制器(RVC)是其视图在启动时添加到UIWindow应用程序的控制器,是不是真的?

[window addSubview:rvcController.View];
[window makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)

现在,UIWindow还有一个rootViewController属性.运行上一段代码时,是否使用rvcController填充了该属性,还是必须明确设置它?

然后,在UINavigationController中,可以设置与入口点的先前RVC集不同的RVC.

在这种情况下,我第一次将一个控制器添加到navigationController堆栈(在其上推一个新的控制器),框架是否将该控制器设置为navigationController的RVC,或者我是否必须通过initWithRootViewController方法显式设置它?

cocoa-touch objective-c ios4 ios rootview

9
推荐指数
2
解决办法
3万
查看次数

animateWithDuration:delay:options:animations:completion:与UIViewAnimationOptionRepeat一起使用时阻止UI UIViewAnimationOptionAutoreverse

我正在运行一个脉冲播放图标的功能:

- (void)pulsePlayIcon {
    if ([self isPlaying]) {
        return;
    }

    [[self videoView] playIcon].hidden = NO;
    [[self videoView] playIcon].alpha = 1.0;

    [UIView animateWithDuration:[self playIconPulseDuration] 
                          delay:[self playIconPulseTimeInterval] 
                        options:(UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse) 
                     animations:^{
                         [[self videoView] playIcon].alpha = 0.8;
                     } 
                     completion:^(BOOL completed) {}];
}
Run Code Online (Sandbox Code Playgroud)

这在iOS 5.0中非常有效,但在4.3中它会阻止UI.用户界面没有响应.我读到这是在iOS 4.0或更高版本(> = 4.0)中重复动画的建议方法.罪魁祸首似乎是UIViewAnimationOptionRepeat.你看到我犯的任何明显错误吗?

core-animation ios4 ios ios5

9
推荐指数
1
解决办法
7303
查看次数

白色空间代替隐藏的标签栏

UINavigationController在里面使用UITabBarController,我的导航控制器中的一个屏幕是一个UIImageView.当我想要全屏显示图像时,我必须隐藏导航栏和标签栏.我可以正确隐藏导航栏但是当我隐藏标签栏时,它会留下50px的空白区域.有什么建议吗?

uinavigationbar uitabbarcontroller uinavigationcontroller uitabbar ios

9
推荐指数
1
解决办法
5059
查看次数

performSelector:withObject:及其保留行为

这是SO中已经回答的问题,但我无法在Apple文档中找到它.你能指出我正确的方向吗?

在以下主题中

在将对象传递给-performSelector之前,我是否必须保留一个对象:withObject:afterDelay:?

对performSelector的保留计数的影响:withObject:afterDelay:inModes

是调用performSelector的对象:withObject:afterDelay是否被NSRunLoop保留?

默认行为似乎如下:它保留接收器和参数.

我正在使用以下代码

[[self delegate] performSelector:@selector(tryToSendStoreData:) withObject:userData];
Run Code Online (Sandbox Code Playgroud)

哪里userData是自动释放的对象.

记录保留计数(我知道它可能无效)传入的数据会增加其保留计数.在委托上调用方法时,保留计数不等于1.

所以,我的问题是:我是否需要执行一些内存管理以避免泄漏或者我是否必须相信Apple的东西?在这里,我作为一个不可知论者说话,因为我找不到合适的文档.

先感谢您.

memory-management objective-c retain nsobject performselector

9
推荐指数
2
解决办法
4859
查看次数

访问UIWebView的JavaScriptCore引擎

我刚刚在iOS7中发现了一个新的框架:JavaScriptCore.

它看起来很棒,但是如何访问运行时/上下文UIWebView

objective-c uiwebview ios javascriptcore

9
推荐指数
1
解决办法
7884
查看次数

是否有一个经验法则来决定何时在Backbone.Marionette中使用trigger或triggerMethod?

我正在玩一点,Backbone.js而且Backbone.Marionette我想知道trigger和之间有什么区别triggerMethod.

特别是,有什么经验法则可以决定何时使用前者或后者?

例如,在我看来,事件对于DOM元素及其视图之间的通信非常有用.

triggerMethod在Marionette中用于更新级联的不同组件,例如布局将show方法调用给其子级(子级响应onShow).所以,对我而言,与调用直接方法相同.这是真的?

怎么样trigger

提前谢谢你.

javascript backbone.js marionette

9
推荐指数
2
解决办法
2841
查看次数

使NSDecimalNumber可编码

是否可以扩展NSDecimalNumber到符合Encodable & Decodable协议?

swift swift4

9
推荐指数
1
解决办法
2824
查看次数