Dou*_*ugW 12 iphone cocoa types objective-c
我写了一个大型社交网络iPhone应用程序,我遇到的最大问题之一是NSInteger(和所有其他NS非对象类型)不是一等公民.这个问题源于这样一个事实,显然,他们没有代表零值.
这会产生两个主要问题:
解决此问题的一种方法是始终使用NSNumber,但这会让人非常困惑.在User模型对象中,我将有大约20个不同的NSNumber,并且没有简单的方法来判断每个是否是float,integer,bool等.
所以这是我对潜在解决方案和优点/缺点的看法.我并没有真正卖掉任何一个,所以我想我会要求反馈和/或解决这个问题.
寻找一个有利于这些技术之一的令人信服的论据,或者我没有想到你是否有一个.
UPDATE
我已经开始了,开始了一个开源项目(Apache 2.0),我将在其中提取一些内部类,因为我有时间.它目前包括一些更常见的本机数据类型(BOOL,CGFloat,NSInteger,NSUInteger)的对象包装器.我们选择这样做是因为它将这些数据类型升级为具有严格类型的一等公民.也许你不同意这种方法,但它对我们来说效果很好,所以如果你愿意,可以随意使用它.
我正在添加我们发现的其他类,包括磁盘支持的LRU缓存,"Pair"对象,低内存释放池等.
表示nil
作为a 的想法的最常见惯例NSInteger
是使用该NSNotFound
值.事实上,这是相同的NSIntegerMax
,尽管读者往往更明显这是一个表示缺少数字的哨兵值.在很多情况下,整个Cocoa使用它.一个常见的情况是作为NSRange
来自-rangeOfString:
等人的返回值的位置字段.