版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
前IOS开发小组编码约定,提高程序的可靠软件编码要遵循以下原则易于使用和;良好的修改性、扩充性;可重用性强/移植性好Objective-C语言为例}排版约UIGraphicsGetCurrentContext()//函NSCellDisabled类名应当包含能清晰该类的功能的名词在面向特定应用的代码中,类名应尽量避免使用前缀,每个类都使用相同的前缀影响可读性。协议头文件里的协议名不要和类 。如
// (void)sendAction:(SEL)aSelector:(id)anObject:(BOOL)flag //NSMatrix,asubclass //of不要使用“andreceiver属性(int)runModalForDirectory:(NSStringfile:(NSString*)nametypes:(NSArray*)fileTypes; (int)runModalForDirectory:(NSStringandFile:(NSString*)nameandTypes:(NSArray*)fileTypes; 方法描述了两个分离的动作,用“and-(BOOL)opneFile:(NSString*)fulPathwithApplication:(NSString*)appNameinsertObject //不清晰,要移除什么? 例如:alloc,altapp,calcdeallocfunc,horiz,info,initintmaxmin,msgnibpboard,rectRep,temp,vert如:ASCII,PDFXMLHTML,URLRTFHTTPTIFFJPG,PNG,FIG,LZW,ROM,RGB,CMYK,MIDI,FTP等。APIsendPort://不好,是发送 还是要返回一个 getter方法时,getter的方法名和变量名应相(id)getDelegate;//(id)delegate;//getter@property(getter=getFontSize)NSInteger 可以使用情态动词(can,should,will等)doesgetcount:(int*)countphase:(float*)phase;“subprefixes”.标准如:NS,AB,IB等。在面向多应用的代码functions,constants,typedefstructures时使用前缀。命名methods时不要使用前缀;方法是存在于定义它们的类所创建的namespace里。也不要在命名结构体字段时使用前缀。如果你是一个大cocoa框架的子类,想绝对确定你的私有方法有一法 这个前缀尽可能独一的,基于你的公司或工程的缩写格Objective-C代码,C++C++变量式化代指针”*”号的*”前加空格,紧跟参数如UITextField每行的长100方法的和定在“-”或者“+1个空格,方法名和第一个参数间不留。-(void)doSomethingWithString:(NSString}//}如果方法名比参数名短,每个参数占用一行,4个字符,且为垂直如(void)short:(GTMFoo*)theFoo//}方法的调调用方法沿用方法的习惯。例外:如果给定源文件已经遵从某种习惯,继 或[myObject 一样,如果无法使用冒号对齐时,每个参数一行、缩进4个字符、如[myObj@public和@public和@private使用单独一行,1类型标示符、名称、尖括号间不留空格该规则同样适用于:类、实例变量和方法。如:@interfaceMyProtocoledClassNSObject<NSWindowDelegate>}CocoaObjective-C特有的规成员@interfaceMyClass:NSObject{id}//publicaccessors,settertakesIndentifyDesignated一个精心设计的初始化方法应当完成以下步骤来确保适当的检测和误差super检测返回值和nil对比,这可 一些发生在父类的初始器里的错误nil。-self=[superinit]; //Calladesignatedinitializerhere;if(self!=nil){//Initializeobject...if(someError){[selfrelease];self=nil;}}return}初始内存中所有的新创建的对象(isa除外)0,“0”“nil”,避免显式的调用+newNSObject的类方法+new,allocinit#importVS使用#importOjbective-COjbective-C++头文件,使用,#includeimport根框架(rootframeworks),而非各单个文件加载会更快。再次强调:使用#import而非#includeObjective-C框架。如#import<Foundation/NSArray.h>//<//创建autoreleaserelease的使autorelease:-(NSMutableArray//returnobjectshouldNSMutableArray*bookMarkList=[[[NSMutableArrayalloc]init]//dosomethingreturnbookMarkList;}方法的逻辑判断比较复杂,有可能提前返回的情况下,建议使用autorelease,虽然这样会稍微有点慢,但这样可 因为提前或其他意外情况导致的内存。例如MyController*controller=[[[MyControlleralloc]init]//...return...[controllerrelease,在将一个新创建的对象赋给变量时,要先将旧对象release掉,否则会内存。-(void)setFoo:(GMFoo*)aFoo[foo_foo_=[aFoo}dealloc的顺序要与变量的顺序相同,这有利于review代NSString的属性的setter使用“copy”,使用retain,以防止意外的修改了NSString变量的值。如:-(void)setFoo:(NSString*)aFoo{[foo_autorelease];foo_=[aFoo}或@property(nonatomic,copy)NSStringnil的检BOOL陷将int值转换为BOOL时应特别。避免直接和YES比Objective-C中,BOOLunsignedchar,YES(1)NO(0)外它还可以是其他值。将int直接转换为BOOL常见的错误包括:BOOL,BOOL值的结果取决于整型值的最后一位BOOL的方法:YESNO,或使用BOOL、_Boolbool之间的转换是安全的,BOOLBoolean间的转换不是安全的,Boolean//-return[selffontTraits]//&intBoolint}-(BOOL)isValidreturn[self}//(BOOL)isBoldreturn([selffontTraits]&NSFontBoldTrait)?YES:}return[selfstringValue]!=}(BOOL)isEnabledreturn[selfisValid]&&[self}▪直接将BOOL和YES/NO比较,如//BOOLgreat=[fooisGreat];if(great==YES)//BOOLgreat=[fooisGreat];if(great)属通过使用property和synthesize组合来避免显式公共实例变位置:属性的紧随成员变量块之后,中间空一行,无缩进严把权限:NSStringcopyretainnonatomicatomicDelegatePattern(委托模式delegate对象使用assign, 使用retain。因为retain会导致循环索引导致内存,并且此类型的内存无法被Instrument发现,极难调试ModelViewview相关的类中添加过多的业务逻辑代码,这让代码的可重用性很差。Controller负责业务逻辑代码,Controllerview使用@protocalAPIs,如果并非所有方法都是必须的,可选使用@optional标示,必选使用@required标识.initinitdealloc方法是是最常用的方法,frame//DosomethingUIScrollView*mScrollView=[[UIScrollViewalloc]initWithFrame:CGRectMake(0,0,self.view.frame.size.width,}view视图排viewviewinti=0;UILabel*l1=[[UILabelalloc]initWithFrame:CGRectMake(0,i,100,30)];[self.viewaddSubview:l1];[l1UILabel*l2=[[UI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论