查看文章 |
Porting AttachBot from Leopard to Tiger, First Attempt Failed
2009-01-03 15:38
自己在写AttachBot的时候没怎么考虑要给Tiger用,直到有人提出来,想着还是port过去吧,顺便了解一下10.4的SDK有什么不一样。 大约改了以下的这些内容: 1. 把加强For-Each循环全部替换掉了 原来一行的 for (PUBoard * board in helper) 变成了3行的 int j, jcount = [helper count]; for (j = 0; j < jcount; j++) { PUBoard *board = [helper objectAtIndex:j]; 2. 把@property标签全部替换为Setter-Getter 用脚本做的这件事,也比较花时间 @property (readwrite,copy) NSString* filePath; 变成了 - (NSString*)filePath; - (void)setFilePath:(NSString*)x; 和相应的实现 - (NSString*)filePath { return filePath; } - (void)setFilePath:(NSString*)x { filePath = x; } 真是有点麻烦 3. 去掉了QuickLook和NSApplication里直接访问Dock上的Badge的功能,因为这两个东西10.4都不支持。 4. 还好没有用10.5+的gc.. 否则又是一阵手忙脚乱 5. 把两个nib file稍微修改了一下,发现10.5下的一些属性在10.4的Setting下会有warning,也不知道怎么去掉这些不支持的属性,最多出现的warning是Image Scaling, 基本上每个Button都会有一个。 6. NSThread的sleepForTimeInterval方法没了,用sleepUtilDate代替之。 7. 到这里就能够编译通过了,没有warning,就是现在每次打开preference都会崩溃.. 上传没什么问题,Image Manipulation也没什么问题,反正昨天在亲戚家就尝试到这里,回家了也没什么心情了.. 附个转property的脚本,指针要写成 NSString* str的格式 def headers(source): """generate headers declaration""" lines = source.splitlines() buffer = '' for line in lines: print line pis = line.split() type = pis[2] vname = pis[3][0:-1] buffer += '- (%s)%s;\n' % (type,vname) buffer += '- (void)set%s:' % (vname[0].upper() + vname[1:]) buffer += '(%s)x;\n' % type print buffer def definitions(source): """generate method definations""" lines = source.splitlines() buffer = '' for line in lines: print line pis = line.split() type = pis[2] vname = pis[3][0:-1] buffer += '- (%s)%s\n{\n\treturn %s;\n}\n' % (type,vname,vname) buffer += '- (void)set%s:' % (vname[0].upper() + vname[1:]) buffer += '(%s)x\n{\n\t%s = x;\n}\n' % (type,vname) print buffer definitions("""@property (readwrite,copy) NSString* boardName;""") headers("""@property (readwrite,copy) NSString* boardName;""") |