小编rob*_*rob的帖子

如何在NSUserDefaults中存储Swift枚举值

我有这样的枚举:

enum Environment {
    case Production
    case Staging
    case Dev
}
Run Code Online (Sandbox Code Playgroud)

我想在NSUserDefaults中保存一个像这样的实例:

func saveEnvironment(environment : Environment){
    NSUserDefaults.standardUserDefaults().setObject(environment, forKey: kSavedEnvironmentDefaultsKey)
}
Run Code Online (Sandbox Code Playgroud)

我知道Swift枚举不是NSObject,这使得它很难保存,但我不确定将它转换为可存储的东西的最佳方法是什么.

swift

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

没有在ARC应用程序上调用Dealloc

我有一个UIViewController被推到容器控制器然后弹出,并使用分配工具,我可以看到视图控制器后来被销毁.但是,从未达到控制器dealloc中的断点.有谁知道为什么没有调用dealloc?ARC可以在不调用dealloc的情况下销毁对象吗?

此外,我已经禁用了NSZombies(有些人说可以导致dealloc不能开火).

编辑:

Dealloc没有做太多,只是打印到控制台,它永远不会被调用:

- (void)dealloc { NSLog(@"Deallocating..."); }

我不能发布容器控制器 - 它是专有的,太复杂了.Dealloc在某些控制器上持续调用,而不是其他控制器.如果我能找到时间,我会尝试发布一个简化版本来重现问题.

有没有办法验证NSZombies是否被禁用?

EDIT2

我正在发布仪器截图; 它看起来像是正确的解除分配.

在此输入图像描述

ios ios5 automatic-ref-counting

38
推荐指数
7
解决办法
3万
查看次数

有没有办法比较CGPoints?

我想要这样的东西:

CGPoint a = CGPointMake(1, 1);
CGPoint b = CGPointMake(1, 1);

if ([CGHelperClass compareCGPoint:a to:b]){
  //do something
}
Run Code Online (Sandbox Code Playgroud)

我知道写自己是微不足道的,但我很好奇它是否已经存在于某个地方.

iphone objective-c ios

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

wait_fences:未能收到回复:10004003错误 - UIAlert没有UITextField存在

我正在开发一个应用程序,当用户第一次开始使用UIAlert询问他们是否想要使用他们当前的位置时,会弹出UIAlert.这发生在主控制器内.但是,使用UIAlert时出现以下错误:

wait_fences: failed to receive reply: 10004003
Run Code Online (Sandbox Code Playgroud)

我调试了它,然后用Google搜索.我没有使用textarea或键盘输入,所以我不必辞职第一响应者.但是,我仍然无法弄清楚为什么我会收到此错误.它只在我添加UIAlert时出现.

MainController.m

- (void)viewDidLoad {

    UIAlertView *mainAlert = [[UIAlertView alloc]
                      initWithTitle:@"Location" 
                      message:@"Do you wish to use your current location?" 
                      delegate:self 
                      cancelButtonTitle:nil 
                      otherButtonTitles:@"No Thanks", @"Sure!", nil];

    [mainAlert show];
    [mainAlert release];

    [super viewDidLoad];
}
Run Code Online (Sandbox Code Playgroud)

头文件的构造如下:

@interface MainController : UIViewController 
<CLLocationManagerDelegate,
 MKReverseGeocoderDelegate, UIAlertViewDelegate>
Run Code Online (Sandbox Code Playgroud)

iphone uialertview

9
推荐指数
2
解决办法
9322
查看次数

Swift闭包捕获和inout变量

请考虑以下代码:

func foo(inout success: Bool) -> (()->()) {
    return { _ in
        success = true
        print (success)
    }
}

var success = false
let closure = foo(&success)

closure()          //prints "true"
print(success)     //prints "false"
Run Code Online (Sandbox Code Playgroud)

封闭似乎创造了一个成功的副本,并没有改变原来的.为什么会这样?我曾假设闭包会指向原始,因为我们传递的是inout变量.

swift

8
推荐指数
2
解决办法
2861
查看次数

UIImageJPEGRepresentation在iPhone SE上的Share Extension中崩溃

我有一个共享扩展程序,可让您裁剪图像,然后将其上传到我们的服务.我们UIImageJPEGRepresentation在上传之前调用获取图像的数据,但由于内存过多而导致崩溃.这只发生在大型图像上,并且(据我们所知)在SE上,并且didReceiveMemoryWarning不会首先调用.使用"照片"应用时会发生这种情况.

无论如何要安全地打电话UIImageJPEGRepresentation,或者试图确定图像是否预先过大?

ios share-extension

6
推荐指数
1
解决办法
473
查看次数

Android - 麦克风输入电平?

我想检测一下在android上的麦克风.谷歌帮助不大.可能吗?

android

5
推荐指数
1
解决办法
3517
查看次数

如果没有以太网电缆,以太网开始阻塞60秒

我正在制作一个时钟.我想通过将以太网电缆插入时钟来设置时钟.大多数情况下,时钟不会插入互联网.

我有一个Arduino板和一个以太网屏蔽,可以成功连接到时间服务器并读取时间(请参阅示例>以太网下的UdpNtpClient示例文件).

问题是,要配置以太网屏蔽,Ethernet.begin()如果屏蔽未连接到Internet ,则呼叫会阻塞60秒.我希望时钟告诉时间并定期检查它是否插有以太网电缆,如果有,请对时间进行任何更正.但是,大多数情况下,这种检查会产生负面结果,因此我每次都不能让时钟冻结60秒.

是否可以检测电缆是否以比Ethernet.begin()功能更快的方式连接?是否有可能编写一个"多线程"解决方案,哪里Ethernet.begin()是非阻塞的?

ethernet arduino

5
推荐指数
1
解决办法
5859
查看次数

如何使用ImageMagick获得Photoshop的"Save for Web"质量?

当我使用photoshop的"Save for Web"调整图像大小时,它看起来与我使用ImageMagick转换它的方式不同.我可以在ImageMagick中更改设置以获得与Photoshop相同的结果吗?这是一个例子.

原本的:

在此输入图像描述

"拯救网络"30.01%
vs
convert -geometry 30.01% home-button-full.png home-button-ipad.png

在此输入图像描述 在此输入图像描述

放大,以便更容易看出差异:

Photoshop中:

在此输入图像描述

ImageMagick的:

在此输入图像描述

photoshop imagemagick

5
推荐指数
1
解决办法
3651
查看次数

NSManagedObject失败isKindOfClass测试

我有一个NSManagedObject.当我创建一个实例时,它意外地失败了isKindOfClass方法.

NSEntityDescription *entity = [NSEntityDescription entityForName:@"DayModel" inManagedObjectContext:context];
DayModel *day = [[DayModel alloc] initWithEntity:entity insertIntoManagedObjectContext:context];

if ([day isKindOfClass:[DayModel class]]) {
    NSLog(@"True");
} else {
    NSLog(@"False");
}
Run Code Online (Sandbox Code Playgroud)

输出:

False
Run Code Online (Sandbox Code Playgroud)

我添加了以下代码:

Class objectClass = [day class];
Class classClass = [DayModel class];
Run Code Online (Sandbox Code Playgroud)

在调试器中查看它,这是我发现的:

在此输入图像描述

打印classClass打印"DayModel" 的描述.

我不确定这是否相关,但DayModel是在Swift中实现的.


UPDATE

这在我的测试类中失败了,但在iOS应用程序中没有.问题似乎与此问题类似.但是,我已经将所有类都添加到了测试目标中,但它仍然失败了.

core-data objective-c ios restkit

5
推荐指数
1
解决办法
808
查看次数