我应该开源我的MonoTouch .NET iPhone应用程序吗?(Should I Open Source my MonoTouch .NET iPhone application? [closed])
这是一个名为Simon Basic Edition的小应用程序,它位于Apple Apps Store的Games> Kids中 。
第一个版本非常基础,但我在1.1中做了一些改进。 这是一周前提交给iTunes Connect的。
基于相同的来源,我写了另一个西蒙卡版本 ,也在等待App Store的批准。 应该有一个与着名艺术家共同开发的另一个版本。
我正在寻找有关iPhone应用程序的开源优缺点的指导,以及发布此代码(许可证,存储库)的更实际方面 。 由于我也在编写其他应用程序,我想知道它是否适合作为多个应用程序的策略 。
It's a small application, named Simon Basic Edition, and it is in the Apple Apps Store top 100 in Games > Kids.
The first version is pretty basic, but I made a bunch of improvements in 1.1. which was submitted a week ago to iTunes Connect.
Based on the same source, I have written another Simon Cards Edition which is also waiting for the approval on the App Store. There should be another edition jointly developed with an excellent and renowned artist.
I am looking for guidance about the pros and cons of Open Source for an iPhone application, and for the more practical aspects of publishing this code (license, repository). Since I am writing other applications too, I wonder if it makes sense as a strategy for multiple applications.
原文:https://stackoverflow.com/questions/1694280
最满意答案
不,没问题。 自动变量每次都可以轻松地重复使用相同的空间。 请记住,自动变量的生命周期在块的结尾处结束,因此它们的寿命永远不会超过一次迭代。
(事实上,你需要更多的代码来构造每个迭代使用不同内存位置的东西 - 你必须保留一个额外的计数器并每次计算一个偏移!)
No, there's no problem. The automatic variables can easily reuse the same space each time. Remember that the automatic variables' lifetimes end at the end of the block, so they never live longer than one iteration.
(In fact, you would need a lot more code to construct something where each iteration used a different memory location -- you'd have to keep an extra counter around and compute an offset each time!)
相关问答
更多-
下列中不属于面向对象的编程语言的是?[2022-05-30]
a -
为什么我们无法从工作线程更新UI?(Why we cant update UI from worker thread? same as other variables/object)[2023-12-05]
答案 - 我认为 - 你正在寻找(为什么以及如何引发异常)是因为在Control类的Handle属性中有明确的代码,它将检查想要访问该属性的代码是否在同一个线程上运行创建了Control(用户界面线程)。 您可以在此处检查Handle属性的参考源。 实际的线程检查发生在InvokeRequired属性的实现中,您也可以在此处查看 。 早期版本的.net Framework不包含此检查,因此从其他线程访问用户界面非常容易。 我们不能不这样做的原因是因为Win32 API代码库的很大一部分不是线程安全的,所以从 ... -
同步工作线程(Synchronizing worker threads)[2022-09-09]
您有n个工作线程和一个主线程a ,它将任务委派给工作人员,并且必须等待他们完成这些任务,然后再为他们分配一批新任务。 基本技术是使用屏障(如boost::barrier )来同步工作线程的结尾和a 。 屏障在n+1处初始化。 主线程等待屏障,每个工作线程在其任务结束时执行相同操作。 当最后一个线程在屏障上调用wait时,所有线程都被唤醒,主线程可以继续工作。 您可能希望添加第二个屏障来阻止工作线程,直到为其分配新任务。 工作线程的主体可能看起来像以下伪代码: while (running) { s ... -
从单个工作线程更新全局变量:我需要互斥锁吗?(Updating global variables from a single worker thread: Do I need mutexes?)[2023-06-29]
我想这取决于你在DoWork()函数中做了什么。 我们假设它将一个点值写入p1。 至少你有一个竞争条件的可能性,它会将无效结果返回给主线程: 假设工作线程想要更新p1的值。 例如,让我们将p1的值从(A,B)更改为(C,D)。 这将涉及至少两个操作,在x中存储C并在y中存储D. 如果主线程决定在GetPointer()函数中读取p1的值,它还必须至少执行两个操作,为x加载值和为y加载值。 如果操作顺序是: 更新线程:存储C 主线程:加载x(主线程接收C) 主线程:加载y(主线程接收B) 更新线程:存储D. ... -
这是否意味着我可以从工作线程中访问UI线程中的变量,即不是UI工具包? 是的,只要它们被声明为成员变量,那么您就可以访问它们。 您甚至可以访问UI元素中的值,例如在TextView上使用getText() ,您无法更新任何UI元素。 如果变量不断更新,需要给出任何特殊的考虑因素, 如果它们正在更新,那么您可能希望有一种同步变量的方法。 执行此操作的一种好方法是使用AsyncTask并更新onPostExecute()的变量。 如果您不熟悉使用AsyncTask ,请确保多次查看文档并理解它们。 Does t ...
-
这是一个关注点分离的练习,最初我会把这个程序分成一个work provider和worker 。 提供者负责队列和执行控制,而工作人员应该进行计算。 以下代码是一个粗略的开始,但它应该让你去。 拆分这两个问题并使用构造函数注入已经支付了可测试性,现在您可以在不涉及Program情况下完全测试Worker 。 注意:考虑到您的应用程序的进一步开发,我强烈建议您查看任务并行库 。 使用诸如TPL之类的库使您可以利用多核处理器,而无需处理线程分配和工作调度的复杂性。 这里讨论有关TPL的更多资源。 public ...
-
不,没问题。 自动变量每次都可以轻松地重复使用相同的空间。 请记住,自动变量的生命周期在块的结尾处结束,因此它们的寿命永远不会超过一次迭代。 (事实上,你需要更多的代码来构造每个迭代使用不同内存位置的东西 - 你必须保留一个额外的计数器并每次计算一个偏移!) No, there's no problem. The automatic variables can easily reuse the same space each time. Remember that the automatic variabl ...
-
工作线程中的MessageBox(MessageBox in worker thread)[2021-06-27]
罪魁祸首是AttachThreadInput,请参阅此消息 。 The culprit was AttachThreadInput, see this message. -
如果一个类不是线程安全的,那么你就不能获取该类的实例并从多个线程中使用该实例。 它们是IIS中的System.Threading.Thread或ThreadPool或Task还是工作线程并不重要。 它们都是线程 - 它们都是抢占式多任务处理,而对象处于不期望被抢占的状态。 但是,在您描述的场景中,这无关紧要。 假设两个Web客户端同时尝试连接到服务器,并且您的请求处理程序尝试登录到文件,这意味着您有两个线程可能同时尝试写入该文件。 但这不是线程安全问题,因为您不会在两个线程中使用相同的StreamWrite ...
-
在后台工作线程中使用C#全局变量是否安全(Is it safe to use C# global variables in a background worker thread)[2022-03-24]
除非你的线程(背景和普通)不修改对象,否则它是安全的。 如果你想让对象相互修改,使用Lock It is safe unless until both your threads(background & normal) not modifying the object. If you want your object to be modified by each other, use Lock