旧工程在Xcod5下出现的问题

最近把iOS6的项目拿到Xcode5下去编译并运行,出现了一些问题:

1、AssertMacros: queueEntry, file: /SourceCache/IOKitUser/IOKitUser-920.1.11/hid.subproj/IOHIDEventQueue.c,

修改main.m,添加如下代码

1
2
3
4
5
6
7
8
9
typedef int (*PYStdWriter)(void *, const char *, int);
static PYStdWriter _oldStdWrite;
int __pyStderrWrite(void *inFD, const char *buffer, int size)
{
    if ( strncmp(buffer, "AssertMacros:", 13) == 0 ) {
        return 0;
    }
    return _oldStdWrite(inFD, buffer, size);
}

然后在main()中的 @autoreleasepool 前添加

1
_oldStdWrite = stderr->_write; stderr->_write = __pyStderrWrite;
2、-[UIView setImage:]: unrecognized selector sent to instance 0x1d410f0

通过Debug定位到如下的代码:

1
2
3
4
5
6
for (int i = 0; i < [self.subviews count]; i++)
{
     UIImageView* dot = [self.subviews objectAtIndex:i];
     if (i == self.currentPage) dot.image = activeImage;
     else dot.image = inactiveImage;
}

self是一个UIPageControl,也就是它的subviews不都是UIImageView,所以要做一下检查,修改如下:

1
2
3
4
 if ([dot isKindOfClass:[UIImageView class]]) {
     if (i == self.currentPage) dot.image = activeImage;
     else dot.image = inactiveImage;
 }