在iOS中,如何从Web服务器接收http状态码(404,500 200等)。 我假设它在NSUrlConnectionDelegate。 Objective-C或Monotouch .NET的答案确定。
我创build了一个button的网格。 下面的代码创buildbutton并显示它们,但button上没有文本。 有没有我失踪的设置? (Obj-C答复很好,我是双语) RectangleF frame = new RectangleF (X + 3, Y + 3, cellWidth – 2, cellHeight – 2); UIButton button = new UIButton (frame); button.TitleLabel.Text = "Baha'i"; button.TitleLabel.Font = UIFont.FromName ("Helvetica-Bold", 15); button.TitleLabel.TextColor = UIColor.Black; button.TitleLabel.Frame = frame; button.BackgroundColor = UIColor.FromWhiteAlpha(.5f,.5f); this.AddSubview (button);
我们在过去的8个月里一直在使用Xamarin iOS,并开发了一个具有许多屏幕,function,嵌套控件的非平凡的企业应用程序。 我们已经做了我们自己的MVVM拱门,跨平台BLL&DAL“推荐”。 我们在Android之间共享代码,甚至在我们的networking产品上使用BLL / DAL。 除了现在在项目的发布阶段,我们发现在Xamarin基于iOS的应用程序中无处不在的内存泄漏。 我们已经遵循了所有的“准则”来解决这个问题,但现实情况是,C#GC和Obj-C ARC似乎是不兼容的垃圾收集机制,它们以目前的方式互相叠加在单点触摸平台上。 我们发现的现实是,对于任何非平凡的应用程序,本机对象和被pipe理对象之间的硬周期将会发生,并且频繁出现。 例如,在使用lambdaexpression式或手势识别器的任何地方发生这种情况都非常容易。 加上MVVM的复杂性,这几乎是一个保证。 错过其中的一种情况,整个对象的graphics将永远不会被收集。 这些图表会引诱其他物体并像癌症一样长大,最终导致iOS的迅速和无情的消灭。 Xamarin的回答是对这个问题毫无兴趣的推迟,以及“开发者应该避免这些情况”的不切实际的期望。 仔细考虑这一点,可以看出这是垃圾收集在Xamarin中基本上被破坏了 。 现在我认识到,在传统的c#.NET意义上,你并不真正在Xamarin iOS中获得“垃圾收集”。 你需要雇用“垃圾维护”模式,实际上是让GC移动并完成工作,即使这样,它也永远不会是完美的 – 不确定性。 我的公司投入了大量资金,试图阻止我们的应用程序崩溃和/或内存不足。 我们基本上必须明确地recursion处理每一个该死的东西,并在应用程序中实施垃圾维护模式,只是为了停止崩溃,并有一个可行的产品,我们可以出售。 我们的客户是支持和宽容的,但我们知道这不能永远持续下去。 我们希望Xamarin有一个专门的团队在这个问题上工作,并一劳永逸。 不幸的是,看起来不像。 问题是,我们的经验是用Xamarin编写的非平凡企业级应用程序的例外规则吗? UPDATE 请参阅DisposeEx方法和解决scheme的答案。
我们已经把TestFlight和TestFlight SDK与MonoTouch结合起来,到目前为止效果很好。 我们注意到的一件事是崩溃报告更适合于Obj-C应用程序。 上传一个压缩的dSYM文件后,它们看起来像这样: 0 OurApp 0x007a7116 testflight_backtrace + 170 1 OurApp0x007a7c3c TFSignalHandler + 208 2 libsystem_c.dylib 0x34f68538 _sigtramp + 48 3 libsystem_c.dylib 0x34f5df5a pthread_kill + 54 4 libsystem_c.dylib 0x34f56fea abort + 94 5 OurApp 0x007793b3 monoeg_g_logv (goutput.c:137) 6 OurApp 0x0077941f monoeg_g_log (goutput.c:147) 7 OurApp 0x005f1393 get_numerous_trampoline (aot-runtime.c:3447) 8 OurApp 0x005f1b2f mono_aot_get_imt_thunk (aot-runtime.c:3576) 9 OurApp […]
这是众所周知的 如果编译甚至需要15秒钟,程序员会在编译器运行时感到厌烦,并切换到读取“洋葱” ,这将吸引他们,并杀死几个小时的生产力。 我们的MonoTouch应用程序需要40秒钟才能在Debug / Simulatorconfiguration中在Macbook Air上编译。 我们在解决scheme中有大约10个组件。 我们还用gcc_flags链接一些本地库。 我确定有一些方法可以优化我不知道的编译时间,这可能与引用,链接器等有关。 我在问这个问题,希望有比我更好的知识的人能够编译(不是双关语意思)列表的技巧和东西来检查,以减lessdebugging版本的MonoTouch编译时间。 请不要build议与MonoTouch不直接相关的硬件优化或优化。
我们正在为移动设备开发数据密集型应用程序。 我们的核心问题是 我们将不得不在客户端存储大量的数据 客户希望应用程序脱机工作 我们的技能是非常多的Web开发C#ASP.Net。 绝对不是目的C 我们已经想到了三种可能性 使用HTML5本地存储的Web应用程序利用脱机应用程序caching。 我们对本地存储有5MB的限制,但对于某些浏览器来说,这可能会降低到2.5MB 通过PhoneGap的 Web应用程序来创build一个本地应用程序。 这里的好处是我们可以使用文件系统进行存储。 不利的一面是,它将不得不经过App Store(尤其是iOS) – 苹果的订阅应用程序收入的30% 我们使用适用于Android和iOS的MonoTouch构build应用程序。 好 – C#和.Net我们可以做到这一点。 坏 – 没有黑莓 题 在这个例子中,我正在努力看到使用PhoneGap的MonoTouch的真正优势。 他们是什么? 他们是吗? 在这个例子中,将数据保存到文件系统将是非常有用的,但我相信电话差距可以通过File对象完成 。 显然,monoTouch会利用System.IO。 是否有实例在MonoTouch中有明确的附加function – 尤其是对移动开发有用的function,例如地理定位或相机typesfunction? 或者电话差距几乎涵盖了所有这些。 厚颜无耻的额外问题 我所错过的还有其他什么select,或者我已经概述的三种方法的其他主要优点/缺点,我已经忘记了吗? 感谢大家的专业知识
我想要同时运行Xamarin Studio的多个副本。 一旦运行了一个副本,双击/Applications的Xamarin Studio图标或单击当前正在运行的Dock图标,只是将当前的图标放在前台。
这个问题与推荐的体系结构以及人们以前使用C#,Monotouch和Monodroid开发的跨平台WP7,iOS,Android应用程序的经验具体相关。 我在 这里和这里研究了以前的问题。 他们提供了很好的答案,但不是我所期待的。 我也发现了这个优秀的问题 , 这个问题确实影响了成本效益,所以有一些重叠。 我有一个要求,开发一个跨平台的iPhone / iPad,WP7和Android应用程序的健康和健身公司,这将与他们的网站整合。 该应用程序需要less量的本地数据存储离线模式和同步networking时,networking可用。 我是一名Windows(C#/ C ++)开发人员,并不想真正走下三个Objective C,Java和C#应用程序的路线,尽pipe如果必须的话。 我也将作为技术主pipe,在这个项目上为一个团队耕种一些工作。 我想知道这里的人是否有使用Monotouch,Monodroid和WP7进行跨平台开发的经验,并分享他们在应用程序架构方面的经验,以便尽可能多地使用代码。 我正在考虑的架构如下: 我的问题如下: 有没有人试过这样的事情? 这些框架(Monotouch,monodroid)是否值得他们从事这类工作? 我可以设置整个项目在Visual Studio 2010与Monotouch,Monodroid和Wp7目标(但共享代码使用“添加为链接”)单独的项目(DLL / EXE)? 对于这个(或者类似的)体系结构,我可以切实地期望什么样的代码重用? 即,我可以使用什么策略/模式来重用本地数据访问,Web服务和业务逻辑? 最好的祝福,
iOS中有很多iOS崩溃报告库,包括TestFlight和HockeyApp 。 如果你不想依靠服务,你仍然可以使用像PLCrashReporter这样的库 。 绑定这些库是相当微不足道的,因为它们的公共API通常由几个具有几个初始化方法的类组成。 但是,当我们的应用程序尝试使用TestFlight和后来的HockeyApp时,我们的应用程序开始随机崩溃。 原来,这是一个多次 报道的已知问题,但Xamarin并没有提出警告,这是相对模糊的,我们发现它是困难的。 我们已经了解到, 所有的iOS崩溃logging器都会阻止Mono捕获空引用exception: try { object o = null; o.GetHashCode (); } catch { // Catch block isn't called with crash reporting enabled. // Instead, the app will crash. } 为什么会这样呢? 引用Xamarin开发者Rolf的话说, 空引用exception实际上是一个SIGSEGV信号。 通常单声道运行时间处理这个并将其转换为空引用exception,允许执行继续。 问题是SIGSEGV信号在ObjC应用程序中是一件非常糟糕的事情(当它出现在托pipe代码之外时),所以任何崩溃报告解决scheme都会将其报告为崩溃(并且杀死应用程序) – 这发生在MonoTouch获得一个机会之前来处理SIGSEGV,所以MonoTouch没有办法做到这一点。 我确定许多在MonoTouch应用程序中使用TestFlight,而不知道它会导致崩溃。 这是不是很讽刺? 如何使崩溃报告库不会使MonoTouch应用程序崩溃?
我已经通过testflight网站发布了一个应用程序,以允许我的同事进行testing,随着越来越多的人打开初始电子邮件并抽出时间完成注册过程,testing人员正在使用我的testing团队。 然而,将它们添加到testing中的过程似乎有点复杂,所以我认为我会validation,并问,如果我做对了,或者如果我错过了明显的东西。 目前整个过程如下所示: 一位同事用邀请链接打开最初的电子邮件 他/她然后注册设备,并注册testing 我通过电子邮件和testflight网站了解到这个新testing人员 然后我必须从上次开始下载(或写下/复制)所有新testing者的UDID列表 然后,我必须访问苹果开发者网站的设备部分,并上传该文件 编辑我的configuration文件以包含新设备 等待它批准,然后下载configuration文件 我将configuration文件拖到Xcodeconfiguration文件pipe理器中 然后我回到MonoDevelop,并确保它仍然指向正确的configuration文件(我不知道是否使用MonoDevelop / MonoTouch复杂的过程,所以我不想离开它,这可能是无关紧要的这个问题) 我重build,并重新发布testing 然后我访问testflight网站,find新的/更新的版本,并确保我的testing人员都被告知 我注意到,如果我不更新版本,它会“静静地”replace现有的版本,并重新使用已经通知的testing人员列表,所以如果我只检查所有新的testing人员并完成,它只会通知新的。 然而,似乎有点工作不得不继续下载和调配configuration文件文件。 我错过了什么明显的东西? 有什么方法可以让我更容易做到这一点? 例如,我注意到我可以在Xcode组织器中创buildconfiguration文件,但是该对话框没有列出任何证书,所以我无法完成该对话框。 如果这是一个关键因素,请留下一个简短的答案,我会重新提出一个新的问题。 这个问题只是:上述程序是否正确?