我是一名具有一定经验的iOS开发人员,这个问题对我来说非常有趣.我在这个主题上看到了很多不同的资源和材料,但是我仍然感到困惑.iOS网络应用程序的最佳架构是什么?我的意思是基本的抽象框架,模式,它适合每个网络应用程序,无论它是一个只有少量服务器请求的小应用程序还是复杂的REST客户端.Apple建议将其MVC用作所有iOS应用程序的基本架构方法,但MVC现在的MVVM模式都不能解释网络逻辑代码的放置位置以及如何组织它.
我是否需要开发类似MVCS(Sfor Service)的东西,并在此Service层放置所有API请求和其他网络逻辑,这在视角可能真的很复杂?在做了一些研究后,我找到了两种基本方法.这里建议为Web服务的每个网络请求API(如LoginRequest类或PostCommentRequest类等)创建一个单独的类,它们都继承自基本请求抽象类AbstractBaseRequest,另外还创建了一个封装了常见网络代码的全局网络管理器.其他首选项(可能是AFNetworking自定义或RestKit调优,如果我们有复杂的对象映射和持久性,甚至是使用标准API的自己的网络通信实现).但这种方法对我来说似乎是一个开销.另一种方法是在第一种方法中使用一些单例API调度程序或管理器类,但不是为每个请求创建类,而是将每个请求封装为此管理器类的实例公共方法,如:fetchContacts,loginUser方法等.那么,什么是最好的和正确的方法?还有其他有趣的方法我还不知道吗?
我是否应该为所有这些网络内容创建另一个层,例如Service,NetworkProvider层或其他任何在我的MVC架构之上,或者该层应该集成(注入)到现有MVC层中,例如Model?
我知道存在很好的方法,或者像Facebook客户端或LinkedIn客户端这样的移动怪物如何应对指数级增长的网络逻辑复杂性?
我知道这个问题没有确切而正式的答案.这个问题的目标是从经验丰富的iOS开发人员那里收集最有趣的方法.最佳建议方法将被标记为已接受并获得声誉奖励,其他方式将被赞成.这主要是一个理论和研究问题.我想了解iOS中网络应用程序的基本,抽象和正确的架构方法.我希望有经验的开发人员提供详细解释.
我想实现自定义ActionBar,必须如下所示:

所以问题:
ActionBar?ActionBar或什么?我想知道是否有办法为所有IntelliJ项目设置默认位置,类似于Eclipse中的工作区概念?
因为我在创建新项目时总是需要更改IDEA项目位置.
我遇到了一个奇怪的问题 - 我在我的应用程序中使用GCM已经有很长一段时间了,一切都运行得很好.然而,发布谷歌Play前,我从改变了我的应用程序包的名字com.android.testapp来com.android.recognition并在此之后GCM停止工作.起初我得到错误GCM sender id not set on constructor并通过覆盖修复它getSenderIds(Context context),但现在我无法获得注册ID.以下是来自logcat的消息:

我怎样才能解决这个问题?当我切换到新包时,我将清单文件中的所有内容更改为新包:
<receiver
android:name="com.google.android.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.android.recognition" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
那背后的问题是什么?可以重命名应用程序包导致这个还是有另一个原因?
我正在尝试Tesseract OCR在我的iOS应用程序中使用库.我从github下载了tesseract-ios库,当我试图识别一个简单的文本图像时,我得到了垃圾.这是我试图识别的图像:

我的文字难以理解:
T0I1101T0W KIR1 H1I1101T0W KIR1 H1I1101T0W CIBEPS H1 ES PBHY P306 EHH11 133I R1 11335 11I1H1 19 13S SYIL 3B19 M H300H1911 H1113 AIR1 J1 OIII 3I9SH5H133IS 13V9 I1 Q1H211 E015 19 W331 H1 111SW
为什么Tesseract甚至无法识别简单的图像?这是我用来实例化Tesseract的代码:
Tesseract* tesseractObject = [[Tesseract alloc] initWithDataPath:@"tessdata" language:@"eng"];
[tesseractObject setVariableValue:@"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" forKey:@"tessedit_char_whitelist"];
[tesseractObject setImage:image];
[tesseractObject recognize];
NSLog(@"RECOGNISED= %@" , [tesseractObject recognizedText]);
Run Code Online (Sandbox Code Playgroud)
这是我的项目结构:
我通过引用添加了英文testdata文件夹.那么我做错了什么?我怎样才能解决这个问题?
在Haskell中学习仿函数时,我想出了Functor.Indexed类型的仿函数.该仿函数定义了一个名为的操作imap.我不理解它的定义和imap签名:imap :: (a -> b) -> f j k a -> f j k b.我试图找到它的正式定义,只发现了这个:http://ncatlab.org/nlab/show/indexed+functor.但它根本没有帮助我.那么有人可以用更简单的词语澄清这种仿函数以及在什么情况下我应该使用它?谢谢.
我开始对iOS中的NIB/Storyboards机制的低级细节感兴趣.我想更多地了解他们的实现 - 我有兴趣开发自己的机制.我在Apple网站上找到了一些有关NIB文件的信息.
他们说:a nib file describes these objects exactly as they were configured in Xcode. At runtime, these descriptions are used to recreate the objects and their configuration inside your application..好.但我找不到有关如何实现故事板的任何信息.故事板只是一堆(包)NIB文件 - 每个一个UIViewController?或者它使用不同的机制?
那XMLNIB /故事板的来源呢?是否有一些从XML到Objective-C源代码的发动机罩下转换器?低级细节将不胜感激.
我有一个Activity和六个不同的Fragments附加.每个片段都有OnFragmentInteractionListener接口,活动实现所有这些监听器以接收回调.它看起来有点乱,所以我感兴趣的是有一些模式/方法来简化这个并使它更优雅吗?
java android android-fragments android-activity fragmentmanager
我想在OCaml和C++之间建立一个桥梁.例如,我想在C++中使用一些用OCaml编写的结构.
我怎样才能做到这一点?有没有任何库,绑定?
我正试图设置一个监听器,EditText当按下输入按钮时.但它根本没有发射.我使用Android 4.2.2在LG Nexus 4上进行了测试.setOnEditorActionListener适用于Android 2.3的亚马逊Kindle Fire,setImeActionLabel无处可用!我也无法为Enterbutton 设置文本.这是代码:
mEditText.setImeActionLabel("Reply", EditorInfo.IME_ACTION_UNSPECIFIED);
mEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
Log.d("TEST RESPONSE", "Action ID = " + actionId + "KeyEvent = " + event);
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我怎样才能解决这个问题?
java ×5
android ×4
ios ×3
objective-c ×3
ios7 ×2
c++ ×1
functor ×1
haskell ×1
ime ×1
interop ×1
networking ×1
nib ×1
ocaml ×1
ocr ×1
storyboard ×1
tesseract ×1
web-services ×1