【发布时间】:2011-01-05 13:10:52
【问题描述】:
对不起,如果这听起来有点像一个菜鸟问题,我对 ObjC 和 iOS 还比较陌生,但对软件开发并不陌生,但是,在阅读有关各种主题的文档/观看视频时,我听到某些短语我'不确定,是否有人可以花点时间对以下术语进行非常简短的描述 - 或者,为我指出一个很好的参考。
我将在下面列出我坚持使用的术语以及我认为我认为它是/意味着什么,以及任何帮助纠正我以便我可以更好地遵循 Apple 文档流程的帮助将不胜感激。
1) 单例
可能类似于 PHP 中的完全静态类,没有实例方法
2) 模型、视图、控制器 (MVC) 组织 - 特别是“模型”组件
我知道广义的定义是将事物分开,我认为这等同于您的视图将是您构建以通过编程方式或在界面构建器中输出到屏幕的内容,控制器将是处理消息的代码(点击, taps 等) 从视图中将信息推送到视图中,尽管在许多情况下形成视图和控制器的 .xib 和 .h/.m 对属于同一家族(即 MyViewController.h/.m/.xib )。我猜测的模型是用于从源读取和写入数据的单独处理程序,例如,您向其发送消息的类,可以从 SQLite 数据库或 XML 提要加载和返回数据并处理它。
3) 在谈论对象类型时,* 的正确位置在哪里?
我知道 * 表示指针,但我看到过类似下面这样写的东西,看起来它们的意思是一样的:
NSString *myVar;
NSString* myVar;
NSString * myVar;
我知道 * 跟在消息头中的类型之后,例如:
- (void)myMessageHandler:(NSString *)str;
4) 什么时候使用 NSInteger 而不是普通的 int?
这可能会让我看起来像个白痴,但我不得不问它,因为我不确定何时使用哪个,而且我看到了许多不同的例子。
5) 可重用的实体标识符
当出队/创建通过重用队列工作的对象时,我看到每次都使用相同的标识符(例如,对于 UITableViewCell,@"cellIdentifier")。但是,我看到的是每次都使用相关的行数据重置单元格,而不是简单地存储在队列中,这种混淆来自 HTML 中的表格,在哪里寻址每一行,您要么遍历 DOM,要么添加一个 ID 标签每一行都是唯一的。
我认为这是一个内存管理问题,如果您使用默认类,您不会真正注意到发生了什么,但如果您使用不同的自定义类,我认为您的想法是您只实例化每种类型中的一个每个父类实例(例如 UITableView),这样即使您每次都重置属性,所需的总内存也是最小的,并且实例化时间从循环中取出,因为您只执行一次?
这个问题的第 2 部分是,如果我的应用程序有多个视图控制器相互推送,是否建议使用与特定视图相关的唯一标识符,所以如果我使用自定义子类,标识符不会导致重叠,也不会导致内存泄漏。
例如,如果我在两个 UITableView 中使用“cellIdenfier”作为我的可重用身份名称,但第二个使用 UITableViewCell 的自定义类,当我返回时,UITableView 会推送一个地图,该地图会在选择注释时推送 UITableView顶视图,系统在出队期间不会潜在地返回错误的类型并导致稍微奇怪的输出吗?
【问题讨论】:
-
你真的应该一次只发布一个问题,因为它违背了 Stack Overflow 作为资源的精神。 :-)
-
抱歉,我以为我会用 5 个同时发布的帖子弄乱系统,但我认为您的观点是,将它们组合在一起可能不会吸引具有所需技能的用户来完全回答问题。以后我会记得做单独的帖子。
-
回答问题 3,其中任何一个都可以。我更喜欢它在名称旁边的右侧,因为我将它作为指针的事实更多地与它的名称而不是它的类型相关联。
-
谢谢 Matthew,我想我会坚持下去,现在我知道这并不重要,它使阅读整个网络的示例代码更容易理解。跨度>
-
那里甚至不需要空间!
NSString*foo;可以正常工作。
标签: objective-c model-view-controller ios4 terminology