将旧的Xcode iOS应用程序转换为64位

时间:2017-05-10 19:47:18

标签: ios int 64-bit xcode8 coverflow

我正在更新一个32位的旧iOS应用。它在我的所有设备上工作正常但是当我尝试通过iTunes连接验证构建时,它失败了说我需要更新它以构建32位和64位。当我将arm64置于架构构建设置中时,我会收到各种警告和错误。

具体来说,我正在使用TKCoverflow,现在有四个int正在收到错误

这是来自TKCoverflowView的代码我已经标记了警告发生的位置

#import "TKCoverflowView.h"
#import "TKCoverflowCoverView.h"
#import "TKGlobal.h"

#define COVER_SPACING 70.0
#define CENTER_COVER_OFFSET 70
#define SIDE_COVER_ANGLE 1.4
#define SIDE_COVER_ZPOSITION -40
#define COVER_SCROLL_PADDING 4

#pragma mark -
@interface TKCoverflowView (hidden)

- (void) animateToIndex:(int)index  animated:(BOOL)animated;
- (void) load;
- (void) setup;
- (void) newrange;
- (void) setupTransforms;
- (void) adjustViewHeirarchy;
- (void) deplaceAlbumsFrom:(int)start to:(int)end;
- (void) deplaceAlbumsAtIndex:(int)cnt;
- (BOOL) placeAlbumsFrom:(int)start to:(int)end;
- (void) placeAlbumAtIndex:(int)cnt;
- (void) snapToAlbum:(BOOL)animated;

@end


#pragma mark -

@implementation TKCoverflowView (hidden)

#pragma mark Setup
- (void) setupTransforms{

    leftTransform = CATransform3DMakeRotation(coverAngle, 0, 1, 0);
    leftTransform = CATransform3DConcat(leftTransform,CATransform3DMakeTranslation(-spaceFromCurrent, 0, -300));

    rightTransform = CATransform3DMakeRotation(-coverAngle, 0, 1, 0);
    rightTransform = CATransform3DConcat(rightTransform,CATransform3DMakeTranslation(spaceFromCurrent, 0, -300));

}
- (void) load{
    self.backgroundColor = [UIColor blackColor];
    numberOfCovers = 0;
    if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
        if([UIScreen mainScreen].bounds.size.height == 568.0){
            coverSpacing = COVER_SPACING;
            coverAngle = SIDE_COVER_ANGLE;
        }
        else if([UIScreen mainScreen].bounds.size.height == 667.0){
            coverSpacing = COVER_SPACING ;
            coverAngle = SIDE_COVER_ANGLE  ;
        }
       else if([UIScreen mainScreen].bounds.size.height == 736.0){
            coverSpacing = COVER_SPACING ;
            coverAngle = SIDE_COVER_ANGLE  ;
        }
        else{
            coverSpacing = COVER_SPACING;
            coverAngle = SIDE_COVER_ANGLE;
        }

    }

    self.showsHorizontalScrollIndicator = NO;
    super.delegate = self;
    origin = self.contentOffset.x;

    yard = [[NSMutableArray alloc] init];
    views = [[NSMutableArray alloc] init];

    coverSize = CGSizeMake(224, 224);
    if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
        if([UIScreen mainScreen].bounds.size.height == 568.0){
             spaceFromCurrent = coverSize.width/2.4;
        }
       else if([UIScreen mainScreen].bounds.size.height == 667.0){
             spaceFromCurrent = coverSize.width/2.4;
        }
        else if([UIScreen mainScreen].bounds.size.height == 736.0){
            spaceFromCurrent = coverSize.width/2.4;
        }
        else{
             spaceFromCurrent = coverSize.width/2.4;
        }

    }

    [self setupTransforms];


    CATransform3D sublayerTransform = CATransform3DIdentity;
    sublayerTransform.m34 = -0.001;
    [self.layer setSublayerTransform:sublayerTransform];

    currentIndex = -1;
    currentSize = self.frame.size;

}
- (void) setup{

    currentIndex = -1;
    for(UIView *v in views) [v removeFromSuperview];
    [yard removeAllObjects];
    [views removeAllObjects];
    coverViews = nil;

    if(numberOfCovers < 1){
        self.contentOffset = CGPointZero;
        return;
    }


    coverViews = [[NSMutableArray alloc] initWithCapacity:numberOfCovers];
    for (unsigned i = 0; i < numberOfCovers; i++) [coverViews addObject:[NSNull null]];
    deck = NSMakeRange(0, 0);

    currentSize = self.frame.size;
    margin = (self.frame.size.width / 2);
    self.contentSize = CGSizeMake( (coverSpacing) * (numberOfCovers-1) + (margin*2) , currentSize.height);
    coverBuffer = (int) ((currentSize.width - coverSize.width) / coverSpacing) + 3;


    movingRight = YES;
    currentSize = self.frame.size;
    currentIndex = 0;
    self.contentOffset = CGPointZero;


    [self newrange];
    [self animateToIndex:currentIndex animated:NO];

}



#pragma mark Manage Visible Covers
- (void) deplaceAlbumsFrom:(int)start to:(int)end{
    if(start >= end) return;

    for(int cnt=start;cnt<end;cnt++)
        [self deplaceAlbumsAtIndex:cnt];

}
- (void) deplaceAlbumsAtIndex:(int)cnt{
    if(cnt >= [coverViews count]) return;

    if([coverViews objectAtIndex:cnt] != [NSNull null]){

        UIView *v = [coverViews objectAtIndex:cnt];
        [v removeFromSuperview];
        [views removeObject:v];
        [yard addObject:v];
        [coverViews replaceObjectAtIndex:cnt withObject:[NSNull null]];

    }
}
- (BOOL) placeAlbumsFrom:(int)start to:(int)end{
    if(start >= end) return NO;
    for(int cnt=start;cnt<= end;cnt++)
        [self placeAlbumAtIndex:cnt];
    return YES;
}
- (void) placeAlbumAtIndex:(int)cnt{
    if(cnt >= [coverViews count]) return;

    if([coverViews objectAtIndex:cnt] == [NSNull null]){

        TKCoverflowCoverView *cover = [dataSource coverflowView:self coverAtIndex:cnt];
        [coverViews replaceObjectAtIndex:cnt withObject:cover];
        CGRect r = cover.frame;
        r.origin.y = currentSize.height / 2 - (coverSize.height/2) - (coverSize.height/16);
        r.origin.x = (currentSize.width/2 - (coverSize.width/ 2)) + (coverSpacing) * cnt;
        cover.frame = r;

        [self addSubview:cover];
        if(cnt > currentIndex){
            cover.layer.transform = rightTransform;
            [self sendSubviewToBack:cover];
        }
        else 
            cover.layer.transform = leftTransform;

        [views addObject:cover];

    }
}


#pragma mark Manage Range and Animations
- (void) newrange{

//这是隐式转换失去整数精度的第一个实例:&#39; NSUInteger&#39; (又名&#39; unsigned long&#39;)到&#39; int&#39;

    int loc = deck.location, len = deck.length, buff = coverBuffer;

    int newLocation = currentIndex - buff < 0 ? 0 : currentIndex-buff;
    int newLength = currentIndex + buff > numberOfCovers ? numberOfCovers - newLocation : currentIndex + buff - newLocation;

    if(loc == newLocation && newLength == len) return;

    if(movingRight){
        [self deplaceAlbumsFrom:loc to:MIN(newLocation,loc+len)];
        [self placeAlbumsFrom:MAX(loc+len,newLocation) to:newLocation+newLength];

    }else{
        [self deplaceAlbumsFrom:MAX(newLength+newLocation,loc) to:loc+len];
        [self placeAlbumsFrom:newLocation to:newLocation+newLength];
    }

    NSRange spectrum = NSMakeRange(0, numberOfCovers);
    deck = NSIntersectionRange(spectrum, NSMakeRange(newLocation, newLength));


}
- (void) adjustViewHeirarchy{

    int i = currentIndex-1;
    if (i >= 0)
        for(;i > deck.location;i--)
            [self sendSubviewToBack:[coverViews objectAtIndex:i]];

    i = currentIndex+1;
    if(i<numberOfCovers-1)
        for(;i < deck.location+deck.length;i++)
            [self sendSubviewToBack:[coverViews objectAtIndex:i]];

    UIView *v = [coverViews objectAtIndex:currentIndex];
    if((NSObject*)v != [NSNull null])
        [self bringSubviewToFront:[coverViews objectAtIndex:currentIndex]];


}
- (void) snapToAlbum:(BOOL)animated{

    UIView *v = [coverViews objectAtIndex:currentIndex];

    if((NSObject*)v!=[NSNull null]){
        [self setContentOffset:CGPointMake(v.center.x - (currentSize.width/2), 0) animated:animated];
    }else{
        [self setContentOffset:CGPointMake(coverSpacing*currentIndex, 0) animated:animated];
    }

}
- (void) animateToIndex:(int)index animated:(BOOL)animated{

    NSString *string = [NSString stringWithFormat:@"%d",currentIndex];
    if(velocity> 200) animated = NO;

    if(animated){
        float speed = 0.2;
        if(velocity>80)speed=0.05;
        [UIView beginAnimations:string context:nil];
        [UIView setAnimationDuration:speed];
        [UIView setAnimationCurve:UIViewAnimationCurveLinear];
        [UIView setAnimationBeginsFromCurrentState:YES];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
    }

    for(UIView *v in views){
        unsigned long i = [coverViews indexOfObject:v];
        if(i < index) v.layer.transform = leftTransform;
        else if(i > index) v.layer.transform = rightTransform;
        else v.layer.transform = CATransform3DIdentity;
    }

    if(animated) [UIView commitAnimations];
    else [coverflowDelegate coverflowView:self coverAtIndexWasBroughtToFront:currentIndex];

}
- (void) animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context{

    if([finished boolValue]) [self adjustViewHeirarchy];

    if([finished boolValue] && [animationID intValue] == currentIndex) [coverflowDelegate coverflowView:self coverAtIndexWasBroughtToFront:currentIndex];

}

@end


#pragma mark -
@implementation TKCoverflowView
@synthesize coverflowDelegate, dataSource, coverSize, numberOfCovers, coverSpacing, coverAngle;

- (id) initWithFrame:(CGRect)frame {
    if(!(self=[super initWithFrame:frame])) return nil;
    [self load];
    currentSize = frame.size;
    return self;
}
- (void) dealloc {

    yard = nil;
    views = nil;
    coverViews = nil;

    currentTouch = nil;
    coverflowDelegate = nil;
    dataSource = nil;

}

- (void) layoutSubviews{

    if(self.frame.size.width == currentSize.width && self.frame.size.height == currentSize.height) return;
    currentSize = self.frame.size;




    margin = (self.frame.size.width / 2);
    self.contentSize = CGSizeMake( (coverSpacing) * (numberOfCovers-1) + (margin*2) , self.frame.size.height);
    coverBuffer = (int)((currentSize.width - coverSize.width) / coverSpacing) + 3;



    for(UIView *v in views){
        v.layer.transform = CATransform3DIdentity;
        CGRect r = v.frame;
        r.origin.y = currentSize.height / 2 - (coverSize.height/2) - (coverSize.height/16);
        v.frame = r;

    }

//这是隐式转换的第二个实例失去整数精度:&#39; NSUInteger&#39; (又名&#39; unsigned long&#39;)到&#39; int&#39;

for(int i = deck.location; i&lt; deck.location + deck.length; i ++){

        if([coverViews objectAtIndex:i] != [NSNull null]){
            UIView *cover = [coverViews objectAtIndex:i];
            CGRect r = cover.frame;
            r.origin.x = (currentSize.width/2 - (coverSize.width/ 2)) + (coverSpacing) * i;
            cover.frame = r;
        }
    }



    [self newrange];
    [self animateToIndex:currentIndex animated:NO];


}


#pragma mark Properties
- (void) setNumberOfCovers:(int)cov{
    numberOfCovers = cov;
    [self setup];
}
- (void) setCoverSpacing:(float)space{
    coverSpacing = space;
    [self setupTransforms];
    [self setup];
    [self layoutSubviews];
}
- (void) setCoverAngle:(float)f{
    coverAngle = f;
    [self setupTransforms];
    [self setup];
}
- (void) setCoverSize:(CGSize)s{
    coverSize = s;
    spaceFromCurrent = coverSize.width/2.4;
    [self setupTransforms];
    [self setup];
}
- (void) setCurrentIndex:(NSInteger)index{

//这给出了错误隐式转换失去了整数精度:&#39; NSInteger&#39; (又名&#39; long&#39;)到&#39; int&#39;

   [self bringCoverAtIndexToFront:index animated:NO];
}
- (NSInteger) currentIndex{
    return currentIndex;
}



#pragma mark Public Methods
- (TKCoverflowCoverView *) coverAtIndex:(int)index{
    if([coverViews objectAtIndex:index] != [NSNull null]) return [coverViews objectAtIndex:index];
    return nil;
}

//这里是错误的实例,在&#39; indexOfFrontCoverView&#39;:&#39; int&#39;的实现中存在冲突的返回类型。 vs&#39; NSInterger&#39; (又名&#39;长&#39;)

- (NSInteger) indexOfFrontCoverView{
    return currentIndex;

}
- (void) bringCoverAtIndexToFront:(int)index animated:(BOOL)animated{

    if(index == currentIndex) return;

    currentIndex = index;
    [self snapToAlbum:animated];
    [self newrange];
    [self animateToIndex:index animated:animated];
}
- (TKCoverflowCoverView*) dequeueReusableCoverView{

    if([yard count] < 1)  return nil;

    TKCoverflowCoverView *v = [yard lastObject];
    v.layer.transform = CATransform3DIdentity;
    [yard removeLastObject];

    return v;
}



#pragma mark Touch Events
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];

    if(touch.view != self &&  [touch locationInView:touch.view].y < coverSize.height){
        currentTouch = touch.view;
    }

}
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {

    UITouch *touch = [touches anyObject];

    if(touch.view == currentTouch){
        if(touch.tapCount > 1 && currentIndex == [coverViews indexOfObject:currentTouch]){

            if([coverflowDelegate respondsToSelector:@selector(coverflowView:coverAtIndexWasDoubleTapped:)])
                [coverflowDelegate coverflowView:self coverAtIndexWasDoubleTapped:currentIndex];

        }else{
            uintptr_t index = [coverViews indexOfObject:currentTouch];
            [self setContentOffset:CGPointMake(coverSpacing*index, 0) animated:YES];
        }


    }



    currentTouch = nil;
}
- (void) touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{
    if(currentTouch!= nil) currentTouch = nil;
}



#pragma mark UIScrollView Delegate
- (void) scrollViewDidScroll:(UIScrollView *)scrollView{



    velocity = fabs(pos - scrollView.contentOffset.x);
    pos = scrollView.contentOffset.x;
    movingRight = self.contentOffset.x - origin > 0 ? YES : NO;
    origin = self.contentOffset.x;

    CGFloat num = numberOfCovers;
    CGFloat per = scrollView.contentOffset.x / (self.contentSize.width - currentSize.width);
    CGFloat ind = num * per;
    CGFloat mi = ind / (numberOfCovers/2);
    mi = 1 - mi;
    mi = mi / 2;
    int index = (int)(ind+mi);
    index = MIN(MAX(0,index),numberOfCovers-1);


    if(index == currentIndex) return;

    currentIndex = index;
    [self newrange];


    if(velocity < 180 || currentIndex < 15 || currentIndex > (numberOfCovers - 16))
        [self animateToIndex:index animated:YES];

}
- (void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
    if(!scrollView.tracking && !scrollView.decelerating){
        [self snapToAlbum:YES];
        [self adjustViewHeirarchy];
    }
}
- (void) scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
    if(!self.decelerating && !decelerate){
        [self snapToAlbum:YES];
        [self adjustViewHeirarchy];
    }
}


@end

我不确定如何处理这些问题。如果有人能够看到他们并提出建议我会非常感激。

0 个答案:

没有答案