小编Anc*_*inu的帖子

自动属性合成(@property)和继承

使用XCode 5.1,会出现一个新警告.它让我明白 - 显然 -我做错了什么.

我们的想法是拥有一个对象(一个模型),它是从原始类继承的可变版本.这样的想法是要打开的是一个性质readonly,以readwrite

@interface Car : NSObject
    @property (strong, readonly) NSString *name;
@end

@interface MutableCar : Car
    @property (strong, readwrite) NSString *name;
@end
Run Code Online (Sandbox Code Playgroud)

这些需要在单独的文件中(如两个普通类).

它给出了这个警告:

Auto property synthesis will not synthesize property 'name' because it is 'readwrite' but it will be synthesized 'readonly' via another property
Run Code Online (Sandbox Code Playgroud)

所以我想知道什么是正确的解决方案来做类似的事情,如果它甚至可能的话.如果需要编写访问器并避免使用自动合成等.请准确,并用文档或其他任何方式支持您的答案.

warnings properties objective-c ios xcode5.1

42
推荐指数
1
解决办法
3万
查看次数

在applicationDidEnterBackground之前显示视图或启动画面(以避免活动视图截图)

我的应用程序中有保密信息,所以当应用程序即将移动到后台时,我想用启动画面隐藏它们.

我在iOS6上运行应用程序.

我试图显示视图,applicationWillResignActive但问题是它显示启动屏幕,即使用户滑动控制面板,例如.我希望它只在应用程序移动到后台时显示.

我尝试显示我的splashScreen,applicationDidEnterBackground但它需要screenShot才能在动画期间恢复时显示信息.

这就是我想要的精神:

- (void)applicationDidEnterBackground:(UIApplication *)application {
    [_window addSubview:__splashController.view];
}
Run Code Online (Sandbox Code Playgroud)

screenshot background uiapplicationdelegate ios ios7

32
推荐指数
2
解决办法
2万
查看次数

是另一个日期的同一周,月,年的日期

知道某个日期是在同一周(或年份或月份)中的最佳方式是什么,最好是使用扩展,并且只使用Swift

作为一个例子,在Objective-C中我有

- (BOOL)isSameWeekAs:(NSDate *)date {
    NSDateComponents *otherDay = [[NSCalendar currentCalendar] components:NSCalendarUnitEra | NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:self];
    NSDateComponents *today = [[NSCalendar currentCalendar] components:NSCalendarUnitEra | NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:date];
    return ([today weekOfYear]   == [otherDay weekOfYear] &&
            [today year]         == [otherDay year] &&
            [today era]          == [otherDay era]);
}
Run Code Online (Sandbox Code Playgroud)

请不要提出解决桥接DateNSDate

date ios swift

21
推荐指数
2
解决办法
8434
查看次数

Swift:从元组数组中获取元素数组

我有一个这样的元组数组:

var answers: [(number: Int, good: Bool)]
Run Code Online (Sandbox Code Playgroud)

我想从中得到一个数字成员数组.就像我做了类似的事情:

answers["number"] // -> Should give [Int] of all values named "number"
Run Code Online (Sandbox Code Playgroud)

我没有找到类似的东西,也许它不可能,但它会很难过:(

arrays tuples ios swift

19
推荐指数
2
解决办法
6423
查看次数

不能用smartgit"拉","只提取"是可用的

我使用SmartGit作为git的GUI.但到目前为止,我总是遇到同样的问题.在我的项目(所有这些)中,我无法拉动,按钮被禁用,它只是"仅提取"按钮可用.

但是,如果我运行该命令git pull origin master工作正常,我可以像往常一样继续使用SmartGit.

如何摆脱这个问题?

在此输入图像描述

git git-pull smartgit

16
推荐指数
1
解决办法
7221
查看次数

给UIRefreshControl一个顶部插图

我喜欢它使用UIRefreshControl(没有UITableViewController):

UIRefreshControl *refreshControl = [UIRefreshControl new];
[refreshControl addTarget:self action:@selector(viewDidBeginRefreshing:) forControlEvents:UIControlEventValueChanged];
[self.table addSubview:refreshControl];
Run Code Online (Sandbox Code Playgroud)

问题是刷新轮位于UINavigationController的半透明条(ios7)下方.StackOverflow上只有几个关于此问题的主题.他们没有为我带来任何有价值的解决方案.

我希望的是让我的UIRefreshControl的y位置降低80px.

注意:我知道不建议在UITableViewController外部使用UIRefreshControl.所以不需要警告它.

uinavigationcontroller ios uirefreshcontrol ios7

13
推荐指数
1
解决办法
6178
查看次数

当调用栏处于活动状态时,自定义UIViewController转换设置错误的topLayoutGuide和bottomLayoutGuide

我有一个UIViewController呈现另一个UIViewController.两个视图控制器都使用topLayoutGuidebottomLayoutGuide使用自动布局.

一切都很好,有和没有通话栏.或者有或没有自定义过渡...

但是,当存在调用栏自定义转换时,我呈现的视图控制器的子视图错误地放下了20px(导致底部的剪切视图).

我查了一下topLayoutGuide,bottomLayoutGuide这是错误的......

这是过渡的代码:

#pragma mark - GETTER
- (CGFloat)presentationTopProgressValue {
    return __fromViewControllerView.y / __containerView.height;
}

#pragma mark - SETTER
- (void)set_context:(id<UIViewControllerContextTransitioning>)_context {
    __context = _context;
    __containerView = [__context containerView];

    __fromViewController = [__context viewControllerForKey:UITransitionContextFromViewControllerKey];
    __fromViewControllerView = [__fromViewController view];
    __toViewController = [__context viewControllerForKey:UITransitionContextToViewControllerKey];
    __toViewControllerView = [__toViewController view];
}

#pragma mark - TRANSITION
- (id<UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source {
    return self;
}

#pragma mark …
Run Code Online (Sandbox Code Playgroud)

transitions uiviewcontroller ios in-call autolayout

9
推荐指数
1
解决办法
487
查看次数

如何正确实现mutableCopyWithZone和copyWithZone

我读了很多关于它的话题,但我还是迷路了.

我想创建两种对象,一种是只有"只读"属性的不可变对象,另一种是只有"readwrite"属性的可变对象.

让我们称他们为EXCar和EXMutableCar.

EXCar是NSObject的子类,EXMutableCar是EXCar的子类.

ExCar将拥有其界面

@property (nonatomic, strong, readonly) NSString *name;
Run Code Online (Sandbox Code Playgroud)

EXMutableCar将在其界面中具有

@property (nonatomic, strong) NSString *name;
Run Code Online (Sandbox Code Playgroud)

所以当我使用它的子类EXMutableCar时,我"打开"EXCar的属性.然后它是可变的.问题是在它们之间正确复制.

我在EXCar中实现了mutableCopyWithZone:

- (id)mutableCopyWithZone:(NSZone *)zone {
    EXMutableCar *mutableCopy = [[EXMutableCar allocWithZone:zone] init];
    mutableCopy.name = _name;

    return mutableCopy;
}
Run Code Online (Sandbox Code Playgroud)

第一个问题,是这样做的好方法吗?(我想要燕子副本)

问题出在copyWithZone上.由于EXCar的属性是readonly,我既不能在EXCar中创建,也不能在EXMutableCar中创建EXCar的新实例,并填充其属性,如下所示:

- (id)copyWithZone:(NSZone *)zone {
    EXCar *copy = [[EXCar allocWithZone:zone] init];
    copy.name = _name; // This can't work...

    return copy;
}
Run Code Online (Sandbox Code Playgroud)

我真的不想做一个"init"方法,传入15个属性(当然,EXCar就是一个例子,真正的类充满了许多属性).通常它们是从服务器的JSON消息启动的,因此它们不需要复杂的init方法.

第二个问题是这样的,如何做一个使我的类不可变的copyWithZone?

谢谢你的帮助 :)

copywithzone ios nsmutablecopying

7
推荐指数
1
解决办法
5764
查看次数

检测iOS 7.1版本

我用这个代码

#define IS_IOS7 (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1)
Run Code Online (Sandbox Code Playgroud)

查找应用程序是否在iOS7上运行.但我现在需要知道它是否在iOS7.1上运行但是没有任何NSFoundationVersionNumber_iOS_7_0NSFoundationVersionNumber_iOS_7_1

我知道的定义

#define NSFoundationVersionNumber_iOS_6_1  993.00
Run Code Online (Sandbox Code Playgroud)

所以也许我可以与高于993的数字进行比较,但我不知道.有人得到安全可靠的解决方案吗?

ios ios7 ios7.1

7
推荐指数
1
解决办法
2937
查看次数

iAds推出新款iPhone 6和6+

同样,iAd编程指南已经过时了很长时间(它提出了自iOS6以来不推荐使用的代码示例).

我想知道如何使用新的iPhone6和6+原始分辨率正确显示广告.

似乎苹果公司没有采取任何措施,而且横幅总是以50pt的高度显示自己的高度.(哪个结果为广告上的白条)

如果有人知道解决方案或有技术/发布说明谈论它?

编辑: 在iAd WorkBench上会出现一条消息:

iPhone 6和6 Plus

所有针对iPhone的现有广告系列现在都包括iPhone 6和6 Plus,以及iPhone 4s,5,5c和5s,以及第4代和第5代及更早版本的iPod touch.现有广告将在信箱中运行以适应更长的宽度,直到您上传iPhone 6和6 Plus资产.使用横幅模板创建的广告将自动转换为支持所有iPhone设备,包括iPhone 6和6 Plus.

任何针对iPhone用户的新广告或已修改广告系列都需要iPhone 6和6 Plus资源.您现在可以批量上传所有iOS设备的资源.

更新的iAd Workbench创意规格,包括iPhone 6和6 Plus的规格以及音频广告,可供下载.

iAd Tester v5.0的更新现已推出,必须用于在iOS设备上正确预览广告.

ios iad ios8 iphone-6 iphone-6-plus

7
推荐指数
1
解决办法
775
查看次数