Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该为iphone应用程序选择哪个模板,该应用程序有多个页面可供查看,而不会占用更多内存_Iphone_Objective C_Cocoa Touch_Navigation - Fatal编程技术网

我应该为iphone应用程序选择哪个模板,该应用程序有多个页面可供查看,而不会占用更多内存

我应该为iphone应用程序选择哪个模板,该应用程序有多个页面可供查看,而不会占用更多内存,iphone,objective-c,cocoa-touch,navigation,Iphone,Objective C,Cocoa Touch,Navigation,我想开发一个有多个页面的应用程序。例如,第一页包含所有菜单。如果你点击一个菜单,它将进入某个列表页面。如果您再次单击列表中的某些项目,它将转到另一个页面,该页面包含该项目的全部详细信息,并且会继续。在每个页面中都有与该页面相关的另一个菜单。如果我点击那个菜单,它会带我到那个特定的页面,然后回到我点击菜单的那个页面 我在网上搜索,发现基于导航的模板最适合实现这一点 我很少关心内存管理点,如果我连续从一个页面导航到另一个页面超过3或4页,基于导航的方法将保留堆栈中的所有视图,这会消耗大量内存。这是一

我想开发一个有多个页面的应用程序。例如,第一页包含所有菜单。如果你点击一个菜单,它将进入某个列表页面。如果您再次单击列表中的某些项目,它将转到另一个页面,该页面包含该项目的全部详细信息,并且会继续。在每个页面中都有与该页面相关的另一个菜单。如果我点击那个菜单,它会带我到那个特定的页面,然后回到我点击菜单的那个页面

我在网上搜索,发现基于导航的模板最适合实现这一点

我很少关心内存管理点,如果我连续从一个页面导航到另一个页面超过3或4页,基于导航的方法将保留堆栈中的所有视图,这会消耗大量内存。这是一种最好的方法还是有任何解决方法来实现这种页面导航


当我从一个页面导航到另一个页面时,基于导航的方法是否会解决内存问题。如果我的理解有误,请纠正我。

看来您对内存管理部分的要求太高了。
为什么你不应该使用一个预定义的功能,这是在其他百万应用程序中使用的

还是另一个问题,哪个真正(我指的是真正)大的接口会消耗40MB的内存?iPhone拥有自己的用户界面,非常高效。内存管理的第一部分是注意分配,这样就不会出现泄漏


视图保留在内存中,并且应该保留在内存中,因为在从一个视图导航到另一个视图时,没有人希望等待几秒钟。(当然你可以在屏幕上删除不必要的UI元素)

我是新的iphone编程。不过,如果你认为这很有用,那就用它吧

您可以使用选项卡栏作为主菜单。当用户单击特定选项卡时,用户将获得与该页面相关的菜单列表。在此之后,当用户选择任何菜单时,将推送新视图。因此,它将最小化2次推送的视图数。这样,您可以使用“后退”按钮返回同一菜单


如果您在分配和释放所用内存时采取了适当的预防措施,则不会出现内存消耗问题。

实用程序模板是一个良好的开端,您可以添加更多的“flipView”或加载原始的“flipView”,具体内容取决于您在“主页”上按下的按钮。此内容可能来自plist阵列等。

请务必使用UINavigationController,它最适合您的需要

还可以阅读一些关于UIViewController类的viewDidLoad/viewDidUnload方法的内容。当视图不“可见”(=已卸载)并再次加载时,将调用这些函数。它们帮助你有效地使用内存。您还应该查看内存警告(didReceiveMemoryWarning方法)


这很简单-在viewDidUnload中,释放所有稍后可以在viewDidLoad方法中重建的内容。它可以帮助您保持尽可能小的内存占用。

您可以使用以下代码了解您的应用程序占用了多少内存
结构任务\基本\信息
马赫数、型号、尺寸=尺寸(信息)
kern\u return\u t kerr=任务信息(mach\u task\u self(), 任务\基本\信息, (任务信息)和信息, &尺寸)
如果(kerr==KERN_SUCCESS){
NSLog(@“正在使用的内存根目录(字节):%u”,info.resident_size);
}
否则{ //NSLog(@“任务信息错误():%s”,马赫错误字符串(克尔)); }

还可以使用didReceiveMemoryWarning方法查看应用程序是否超过内存限制

首先感谢您的建议。根据您的解释,视图将保留在内存中,但我们可以删除该视图中的所有对象。我说的对吗?如果我收到内存警告,lzzy可以删除UINavigationController的特定视图吗?如果有内存警告,UINavigationController会自动处理。如果我在页面之间来回移动,我的内存是否会增长,或者是否会保持与第一次相同?否,如果调用viewDidUnload,视图将不再存在,它将从内存中删除,您应该释放所有的输出,等等,以释放内存。对于第二个问题,所有UIViewController都会调用didReceiveMemoryWarning方法,您应该释放尽可能多的内存,否则系统会杀死您的应用程序。如果来回移动,您的内存占用将是+-相同的。当您返回时,UINavigationController确实会释放当前视图控制器,如果您继续,您将再次分配它,但它将在返回过程中被解除分配,等等。不要太担心UINavigationController的内存管理等。正如我所写的,请关注ViewDiLoad、ViewDiUnload,我已经收到UIViewController的MemoryWarning和dealloc方法,以保持较小的内存占用,不必担心UINavigationController等。谢谢。你的话让我对使用UINavigationController充满信心。我会尝试一下我的应用程序。我明白,但问题是,如果我浏览更多页面,当我使用UINavigationController时,内存消耗会是多少?在前面的问题中,我提到我想浏览更多的页面,而且在一些页面中有一些子菜单,这些子菜单将完全带用户进入新页面。从该页面我不想再次导航到上一页,但需要回到主页。因此,我认为内存中的视图不会被释放。当我选择菜单的选项卡栏时,如果我单击一个菜单,我将看到一个页面,我如何导航到该选项卡中的另一个页面?此外,在该页面中还有另一个特定页面的菜单。我应该如何浏览这些菜单?我有一个