在将此问题作为问题发布到AFNetworking回购后,事实证明这实际上是我的使用问题.根据我的问题回复:
NSURLSession保留其委托(即AFURLSessionManager).调用invalidateSessionCancelingTasks:确保会话最终确定并释放其委托.
所以,长话短说:如果你AHTTPSessionManager按照下面描述的方式使用,请务必致电invalidateSessionCancelingTasks:以确保会议最终确定并释放他们的代表
我有一个子类AFHTTPSessionManager称为GTAPIClient我用来连接到我的REST API.我意识到文档声明要用作单例,但在某些情况下我需要编写一个新实例.但是,似乎每当我这样做时,对象永远不会被释放.目前,在解除分配时,GTAPIClient除了NSLog自身之外,什么都不做.这是一些演示行为的示例代码
@implementation GTAPIClient
- (void)dealloc
{
NSLog(@"Dealloc: %@", self);
}
@end
Run Code Online (Sandbox Code Playgroud)
#import "GTBaseEntityViewController.h"
//Models
#import "GTBaseEntity.h"
//Clients
#import "GTAPIClient.h"
@interface GTBaseEntityViewController ()
@property (nonatomic, weak) GTAPIClient *client;
@property (nonatomic, weak) GTBaseEntity *weakEntity;
@end
@implementation GTBaseEntityViewController
- (IBAction)makeClient:(id)sender {
self.client = [[GTAPIClient alloc] init];
NSLog(@"I just made an API client %@", self.client);
//Another random object assigned to a similar property, just …Run Code Online (Sandbox Code Playgroud) 我的问题本质上主要是建筑性的。我正在使用UITableViewController来显示内容列表。没什么大不了的,很标准。但是,其中tableHeaderView包含大量功能。有几个点击目标,会进行动画处理,并且显示会根据用户交互而更改。目前,我有一个自定义的子类,可UIView处理大多数显示逻辑,并通过委托协议将抽头路由回给,UITableViewController以执行。
随着向中添加更多功能tableHeaderView,我感觉好像UITableViewController变得有点混乱和冗长。因此,我很好奇,如果是有意义的创建一个子类,UIViewContoller并将其设置为view给tableHeaderView我的UITableViewController?如果这样做,我将把关注点分开一些,并且可以将几乎所有逻辑容纳在我的新UIViewController中,我想我仍然需要通过两个viewController之间的委托来路由某些通信。
从架构的角度来看这有意义吗?还是应该仅将现有UITableViewController逻辑用于所有逻辑?
**编辑**
例如,将这段代码放在我的 UITableViewController
- (void)addHeader
{
myCustomHeaderViewController *hvc = [[myCustomHeaderViewController alloc] init];
//Assume the view for hvc is set up w/re to sizing, etc.
self.tableView.tableHeaderView = hvc.view
}
Run Code Online (Sandbox Code Playgroud) 我的问题主要与Objective C中的层次模型的架构或设计模式有关.对于后台我的应用程序相对简单.通常,它与Web服务进行对话,以检索和显示用户可以遵循的内容.当有人关注某事时,他们所关注的事物在概念上被存储,以便稍后通过发布到Web服务来访问.
我想建议逻辑应该去哪里管理Web服务和用户遵循的事物组之间的交互.
例如,是否适合创建一个模型对象,例如MyStuffModel一个名为followedThingshold的AThingModel对象的数组属性?如果是这样,是否可以在模型中编写和执行从Web服务等刷新的逻辑?
潜在的代码示例
@interface MyStuffModel : NSObject
@property (nonatomic, strong) NSArray *followedThings;
- (void)refreshAllFollowedThingsFromWebService;
@end
@implementation MyStuffModel
- (void)refreshAllFollowedThingsFromWebService
{
//call my API client (built on AFNetworking), get back a response
//populate followedThings, notify a view controller, etc
}
@end
Run Code Online (Sandbox Code Playgroud)
或者,如果我没有MyStuffModel对象并通过直接从视图控制器调用我的API客户端来管理对我的Web服务的调用?
根据您的经验,需要采用哪种方法?或者还有另一种方式吗?
我是objective-c的新手,我有一个建筑或设计模式问题.我正在构建一个ios应用程序,像大多数ios应用程序一样,它使用各种颜色,字体,模式等.也许我目前正在编写错误的代码,但我发现自己重写了颜色设置等内容.结果,改变颜色成为查找代码中的所有颜色设置,重写它们等的练习.对我来说似乎有点低效.
例如,我在我的应用程序中的多个位置使用深红色.我倾向于频繁地编写[UIColor colorWithRed ...]方法.但是,我很好奇是否创建一个返回我的自定义颜色的单例(作为UIColor)是"模块化我的样式包"的合理方法.因此,我可以写这样的东西
[label setTextColor:[[MyStyleSingletonClass sharedStyler] myDarkRed]];
Run Code Online (Sandbox Code Playgroud)
因此,如果设计师突然希望myDarkRed变得更暗,我会改变它一次并且很好地浏览应用程序.显然,风格和用户体验比色彩还要多,但我很好奇这种方法是否有意义,或者我是否在为将来的问题做好准备.或者也许这个功能已经存在于objective-c中,我错过了这一点.提前致谢.