Tag: 基金会

Objective-C 2.0的内存pipe理

我是Objective-C的初学者。 我正在通过编写简单的命令行代码研究Objective-C中的内存pipe理。 我的环境在下面。 Mac OS X Mountain Lion。 Xcode4.5 我在下面写了一个代码。 test.m 1 #import <Foundation/Foundation.h> 2 #import <stdio.h> 3 4 @interface A : NSObject 5 -(void)myprint; 6 @end 7 8 @implementation A 9 -(void)dealloc { 10 printf("dealloc!!\n"); 11 [super dealloc]; 12 } 13 14 -(void)myprint { 15 printf("myprint!!\n"); 16 } 17 @end 18 19 int main(void) […]

NSLocaleCountryCode返回nil

我有一个bugreport,在下面的行中,其中客户端是一个NSMutableDictionary的实例崩溃 [client setObject:[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] forKey:@"country"]; 我的猜测是, NSLocaleCountryCode在这一行返回nil,这导致添加一个零对象的NSDictionary ,这将导致崩溃。 问题是,有没有人遇到过这样的问题? 有没有什么原因NSLocaleCountryCode可能为零当前的currentLocale ? 文档没有说任何关于返回一个零值,我认为这将始终返回一个有效的国家。 最好的问候,迈克尔

比较包含NSString的NSDictionaries

我有两个包含NSStrings NSDictionaries 。 为了比较这两个字典我使用isEqualToDictionary:方法。 关于isEqualToDictionary:的文档说: “如果两个字典每个都拥有相同数量的条目,并且对于给定的键,每个字典中相应的值对象满足isEqual:test,则两个字典具有相同的内容。 所以,我的string通过isEqual:方法进行比较。 问题是: isEqual:如何工作的NSString ? 它使用isEqual:来自NSObject吗? 我读过NSObject isEqual只是比较地址,使用== 。 为了certificate或反驳这个想法,我写了一个例子: NSString *str1 = @"sampleString"; NSString *str2 = [NSString stringWithFormat:@"%@", @"sampleString"]; BOOL result = [str1 isEqual:str2]; result是YES , str1和str2的地址虽然不同。 所以,要么不使用isEqual:从NSObject (比什么?),或NSObject的isEqual:做一些更复杂的事情,然后只是检查地址的相等性。 有人知道它是如何工作的吗?