我是一个具有一定经验的iOS开发人员,这个问题对我来说真的很有趣。 我在这个主题上看到了很多不同的资源和材料,但是我仍然感到困惑。 什么是iOSnetworking应用程序的最佳体系结构? 我的意思是基本的抽象框架,模式,这将适合每个networking应用程序,无论是只有less数服务器请求的小应用程序,还是一个复杂的REST客户端。 苹果公司build议使用MVC作为所有iOS应用程序的基本架构方法,但MVC和更现代的MVVM模式都不能解释将networking逻辑代码放在哪里以及如何组织它。 我是否需要开发一些类似MVCS ( S for Service )的东西,并且在这个Service层中放置所有API请求和其他networking逻辑,这些东西可能真的很复杂? 在做了一些研究之后,我发现了两个基本的方法。 在这里build议为每个networking请求创build一个单独的类到Web服务API (如LoginRequest类或PostCommentRequest类等),它们都从基本请求抽象类AbstractBaseRequestinheritance,并且除了创build一些封装的全局networkingpipe理器常见的networking代码和其他偏好(如果我们有复杂的对象映射和持久性,甚至是使用标准API的自己的networking通信实现,则可能是AFNetworking定制或RestKit调优)。 但是这个方法对我来说似乎是一个开销。 另一种方法是像第一种方法一样使用一些单例API调度程序或pipe理器类, 但不是为每个请求创build类,而是将每个请求封装为此pipe理器类的实例公共方法,如: fetchContacts , loginUser方法等。那么,最好的和正确的方法是什么? 还有其他有趣的方法我还不知道? 我应该为所有这个networking的东西,如Service ,或NetworkProvider层或任何我的MVC架构上创build另一层,或者这个层应该被集成(注入)到现有的MVC层,例如Model ? 我知道那里有美丽的方法,或者像Facebook客户端或LinkedIn客户端这样的移动怪物如何处理networking逻辑的指数级增长的复杂性? 我知道这个问题没有确切而正式的答案。 这个问题的目标是收集有经验的iOS开发人员最有趣的方法 。 最好的build议方法将被标记为接受和奖励声誉赏金,其他人将被高举。 这主要是一个理论和研究问题。 我想了解iOS中的networking应用的基本,抽象和正确的架构方法。 我希望有经验的开发人员的详细解释。
我想logging呼叫跟踪在某些点,如失败的断言,或未捕获的exception。
在转换项目使用ARC时,“switch case in protected scope”是什么意思? 我正在转换项目使用ARC,使用Xcode 4编辑 – >重构 – >转换为Objective-C ARC …我得到的一个错误是“开关大小在保护范围内”一个开关盒。 编辑,这是代码: ERROR在“默认”情况下被标记: – (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @""; UITableViewCell *cell ; switch (tableView.tag) { case 1: CellIdentifier = @"CellAuthor"; cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } cell.textLabel.text […]
我有一个dictionary我需要通过使用dictionary生成一个JSON string 。 是否有可能将其转换? 你们能帮忙吗?
在ARC下的单例共享实例存取器中使用dispatch_once的确切原因是什么? + (MyClass *)sharedInstance { // Static local predicate must be initialized to 0 static MyClass *sharedInstance = nil; static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ sharedInstance = [[MyClass alloc] init]; // Do any other initialisation stuff here }); return sharedInstance; } 在后台asynchronous实例化单例不是一个坏主意吗? 我的意思是,如果我请求共享实例并立即依赖它,会发生什么情况,但dispatch_once需要等到圣诞节才创build我的对象? 它不立即返回正确的? 至less这似乎是大中央调度的重点。 那他们为什么要这样做?
是否有可能使用标准属性语法块作为属性? ARC有没有变化?
归档项目时出错。 这是我的环境。 Mac OS Lion Xcode 4.3.1 iOS SDK 5.1 项目部署目标是: IPHONEOS_DEPLOYMENT_TARGET 3.2 错误显示: ld: library not found for -lPods clang: error: linker command failed with exit code 1 (use -v to see invocation) 我想Pods是我用来pipe理XCode项目依赖关系的CocoaPods。 https://github.com/CocoaPods/CocoaPods 这是我的Podfile platform :ios dependency 'libPusher', '1.1' 我不确定错误是什么意思?
我有一个应用程序,用户可以从内置的应用程序图像或从iphone照片库中select一个图像。 我使用一个具有NSString属性的对象NSString来保存imagePath 。 现在在内置的应用程序图像的情况下,我得到的文件名作为NSString保存在[occasion imagePath] 。 但是在第二种情况下,用户从照片库中选取一张图像,我得到一个NSURL ,我想将其转换为NSString ,以便能够将其保存在[occasion imagePath ]中。 是否有可能将NSURL转换为NSString ?
我正在检测用户是否按下了2秒钟: UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)]; longPress.minimumPressDuration = 2.0; [self addGestureRecognizer:longPress]; [longPress release]; 这是我如何处理长按: -(void)handleLongPress:(UILongPressGestureRecognizer*)recognizer{ NSLog(@"double oo"); } 当按下2秒以上时,文本“double oo”会被打印两次。 为什么是这样? 我该如何解决?
我想在我的应用程序中使用Xcode 6在UIColor上创build一个类别。但是,在Xcode 6中没有Objective-C类别文件模板。 有没有select在Xcode 6中创build一个类别?