- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我打算做两个被认为是糟糕风格的事情,但我有理由,而且我对 Cocoa 解决方案持开放态度,我只是不知道它是什么。
我想要一个 NSArray
,它对 UIView
是类型安全的,然后是一个 NSArray
,它对 的数组是类型安全的UIView
s。 UIViews
的二维数组。
我喜欢这个,因为我实现了一个自定义的双 UITableView
,它在垂直 TableView 中有一个嵌套的水平 TableView 。我会使用我的自定义 ViewsArray
和 Views2DArray
作为数据结构,其他程序员可以轻松地将内容提供给我的 DoubleTableView
。这是想要扩展 NSArray
的充分理由吗?
我遇到的问题是我覆盖了方法的功能:
(NSArray *) initWithObjects:(id) firstObject ...
为:
(ViewsArray *) initWithViews: (UIView *) firstView, ...
但我的方法的返回值是一个NSArray
,它没有包含在我的ViewsArray
中的其他方法,这意味着无法识别的选定异常。我通过制作 ViewsArray
的 NSArray
属性暂时解决了这个问题,其中包含我的观点,但是当我想将我的内容提供给我的 双 TableView
。
例如:
[[self.delegate content].arraysOfViews objectAtIndex:indexPath.section];
代替
[[self.delegate content] objectAtIndex:indexPath.section];
我知道这是几个字母,但我正在尽力写出好的代码。
如何在我的 initWithViews
中返回 self
并拥有一个带有我添加的 greatestHeight
属性的 NSArray
, totalWidth
等? (类型转换?)我在想这个错误吗(使用 Java/typesafity ...)?对于这样的数据结构,最佳解决方案是什么?
编辑:
为了以我认为“时尚”的方式解决我的问题,我做了以下事情:
这是我的 header (注意它是一个 NSObject):
@interface ViewsArray : NSObject
@property int greatestHeight;
@property int greatestWidth;
@property int totalWidth;
- (ViewsArray *) initWithViews: (UIView *) firstView, ...;
- (UIView *) getViewAtIndex: (NSInteger) index;
- (NSUInteger) viewCount;
@end
这是在我的实现中:
@interface ViewsArray ()
@property (retain, nonatomic) NSArray *views;
@end
这意味着我只管理一个私有(private)的 NSArray。允许漂亮的引用。
我今天学到的东西:阅读该死的文档并接受你的语言。我知道这个实例可能不会显示最后一个,但我更接近 ;)
最佳答案
简单的解决方案; 别打扰。
在使用 NSArray/NSDictionary API 使用和调试 Objective-C 应用程序 18 年的过程中,我认为我只遇到过几次错误的类集合问题。在所有情况下,它都表明存在总体设计问题,而不是程序错误。
简而言之,您的应用程序控制集合的内容,除非您将错误的内容放入集合中,否则您的集合将包含您所期望的内容。在编写良好的应用程序中,可以向集合中添加内容的位置数量应该非常少,通常只有一两个位置。
如果你确实觉得需要对此进行防御,那么在向数组添加内容的一两个位置添加一个 NSAssert([... isKindOfClass:...])
.无需在检索点添加相同内容。
但是,存在一种常见的误报故障模式,即集合中的类型不正确。如果您过度释放一个对象,而某个其他类的对象恰好分配在同一位置,那么您将看到此模式的失败。
关于iphone - 如何在编写漂亮代码的同时避免扩展 NSArray 和在 Java 中思考,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11778491/
在通过REST Request Body方法发出搜索请求时,例如 GET /bank/_search { "query": { "match_all": {} }, "sort": [
有没有办法检测用户是否停止滑动?也许 bij 鼠标输入检查之类的。我尝试在 onSliderChange 事件中使用鼠标 isButton0Release 和 hasFocus 来检查用户是否停止滑动
(来源:google.com) 最近,我发现我的应用程序中显示的汉字相当难看。 我想我应该让它们“消除锯齿”。但是,我如何在 Java 中做到这一点? 仅供引用,我没有明确选择要在 GUI 应用程序中
我正在创建一个网站,根据某些条件(即是否登录、是否填写表格等),不同页面的外观可能会有很大差异。这使得需要在不同的时间输出不同的html block 。 但是,这样做会使我的 php 代码看起来很糟糕
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
如果我有一个类包含例如几个将用向量填充的槽,那么问题通常会出现。如果我想让这个类的对象或多或少透明,我会为它实现 print-object。在这里我遇到了问题: 如果我在一行中打印所有内容,REPL
我有一个允许上传到我网站的文件扩展名列表。 我用 jQuery Validation plugin 检查它们. 如果他们选择了不受支持的扩展程序,我会显示一条错误消息。 看起来像 var msg =
在一个本身嵌套在一个或多个父数组/结构/union 中的数组/结构/union 中读取多个数字/字符串的最佳方法是什么? 没有临时变量的第一个例子: printf("%d %d\n", a[9][3]
我是 AngularJS 的新手。我目前在为我的观点编写漂亮的 url 时遇到问题。我已经设置了 $locationProvider.html5Mode(true);删除 #从地址栏中显示的网址。但是
我有一个带有 ElasticSearch 的自动完成 jquery 功能。输入第一个字母时出现以下错误。 跨源请求被阻止:同源策略不允许读取 http://localhost:9200/test12/
我是一名优秀的程序员,十分优秀!