百度空间 | 百度首页 
 
查看文章
 
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;""")


类别:默认分类 | 浏览() | 评论 (0)
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu