标签:nscopying 深拷贝 钱拷贝 description
Objective-C没有其他语言内置的命名空间(namespace)机制。如果发生命名冲突程序连接时候,出现以下错误:
duplicate symbol _OBJC_METACLASS_$_EOCTheClass in:
build/something.o
build/something_else.o
duplicate symbol _OBJC_CLASS_$_EOCTheClass in:
build/something.o
build/something_else.o
错误的原因在于,应用程序中的两份代码都实现了EOCTheClass的类。避免此问题的唯一办法变相命名空间。
在使用Cocoa创建应用程序的时候一定要注意,Apple宣称其保留使用所有“两个字母前缀”,所以你自己选用的前缀应该是三个或以上。
NSLog(@"object =%@",object);
● +string//用于创建新的空字符串 ● +stringWithString//工厂方法,用于根据某字符串创建新的字符串 ● +localizedStringWithFormat://工厂方法,格式化本地字符串 ● -lowercaseString//把字符串中的大写字母全部转化位小写 ● -intValue//将字符串解析为整数 ● -length//获取字符串长度 ● -lengthOfBytesUsingEncoding://若字符串是以给定的编码格式 ● -getCharacters:range://获取字符串给定范围的字符 ● -(void)getCharacters:(unichar*)buffer range:(NSRange)aRange//首个参数应该指向一个足够大的数组,以便容下请求范围内的那些字符串 ● -hasPrefix://是否有某个前缀 ● -isEqualToString://判断字符串是否相等
-(id)copyWithZone:(NSZone*)zone
#import<Foundation/Foundation.h> @interface EOCPerson :NSObject<NSCopying> @propetry (nonatomic,copy,readonly) NSString *firstName; @propetry (nonatomic,copy,readonly) NSString *lastName; -(id) initWithFirstName:(NSString*)firstName andLastName:(NSString*)lastName; -(void)addFriend:(EOCPerson*) person; -(void)removeFriend:(EOCPerson*)person; @end @implementation EOCPerson{ NSMutableSet *_friends; } -(id) initWithFirstName:(NSString*)firstName andLastName:(NSString*)lastName{ if((self = [super init])){ _firstName = [firstName copy]; _lastName = [lastName copy]; _friends = [NSMutableSet new]; } return self } -(void)addFriend:(EOCPerson*)person{ [_friends addObject:person]; } -(void) removeFriend:(EOCPerson*)person{ [_friends removeObject:person]; } -(id)copyWithZone:(NSZone)zone{ EOCPerson *copy =[[[self class]allocWithZone:zone] initWithFirstName:_firstName andLastName:_lastName]; copy->_friends = [_friends mutableCopy]; return copy } @end
-(id)initWithSet:(NSArray*)array copyItems:(BOOL)copyItems
// 非容器类对象 NSString *str = @"origin string"; NSString *strCopy = [str copy]; NSMutableString *mstrCopy = [str mutableCopy]; [mstrCopy appendString:@"??"];
NSMutableString *mstr = [NSMutableString stringWithString:@"origin"]; NSString *strCopy = [mstr copy]; NSMutableString *mstrCopy = [mstr copy]; NSMutableString *mstrMCopy = [mstr mutableCopy]; //[mstrCopy appendString:@"1111"]; //error [mstr appendString:@"222"]; [mstrMCopy appendString:@"333"];
【本章要点】
《Effective Objective-C 2.0》—(第15-22条)—接口与API设计、深拷贝、浅拷贝,布布扣,bubuko.com
《Effective Objective-C 2.0》—(第15-22条)—接口与API设计、深拷贝、浅拷贝
标签:nscopying 深拷贝 钱拷贝 description
原文地址:http://blog.csdn.net/hherima/article/details/38403277